从数据帧列表向数据帧添加行,直到列表

时间:2016-12-08 12:57:46

标签: r list rbind

我有一个包含数据框的列表,每个数据框都有不同的行数。现在,我想向列表的每个数据帧添加行,直到列表的每个数据帧都有1000行。添加的行应该只包含NA。列表的所有数据帧都包含三列。

我首先定义了函数

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

然后使用lapply

将其应用于列表的每个数据帧
dflisttest <- lapply(dflisttest, adder)

但是,这会为每个数据帧添加一行,而不是仅添加到少于1000行的数据行。我怎么能循环它以便列表的所有数据帧自动填充多达1000行?

1 个答案:

答案 0 :(得分: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