2016-12-08 51 views
0

我有一个包含数据框的列表,每个列表都有不同数量的行。现在我想将行添加到列表的每个数据帧中,直到列表中的每个数据帧都有1000行。添加的行应全都只包含NAs。列表中的所有数据框都包含三列。将数据行从数据框列表中添加到数据框,直到列表中的每个数据框的行数为1000为止

我第一次定义的函数

adder <- function(x) {rbind(x, c(NA, NA, NA))} 

,然后使用lapply

dflisttest <- lapply(dflisttest, adder) 

然而,把它应用到列表的每个数据帧,这将添加一行到每一个数据帧,而不是只对少于1000行的。我如何循环它,以便列表中的所有数据框自动填充1000行?

+1

您的问题是无法重现的。请提供一个MCVE。例如,每个data.frames具有相同的列数? – lmo

回答

0

如果这是你的数据框:

df <- data.frame(x=c(rep(1,8),rep(2,4)), 
       y=c(rep(0,8),rep(5,4)) 

,并要绑定值(NA),直到其nrow = 1000,你可以尝试:

adder <- function(x) { 

     if(nrow(x)<1000) 
       x[(nrow(x)+1):1000,] <- NA 

     return(x) 
} 

此功能将NA中的所有列在最后一行至第#1000行之后

示例:在行12之后添加了NA,这是df的原始大小。

> df <- adder(df) 
> df[10:16,] 
    x y 
10 2 5 
11 2 5 
12 2 5 
13 NA NA 
14 NA NA 
15 NA NA 
16 NA NA 
+0

如果data.frame已经有1000行了?... prefer [return(x [1:1000,]' –

+0

Aha,thx。编辑函数首先检查大小 – OmaymaS

+0

谢谢,现在使用lapply加法器函数成功了! – GNee

相关问题