R:如何在列表中追加数据框?

时间:2014-04-11 07:16:31

标签: r

我正在尝试使用for循环生成数据帧。 如何将这些数据框附加到列表中,然后检查是否有空框架? 我想从列表中删除空行的数据框。

感谢任何帮助

5 个答案:

答案 0 :(得分:2)

您应该在不使用lapply循环的情况下使用for。优点是:

  • 您想要创建data.frame列表并lapply创建列表
  • 你做了一次工作,不需要做2次循环。

Somethinkg喜欢:

lapply(seq_len(nbr_df),function(x)
          {
    ## code to create you data.frame dt
    ## dt = data.frame(...)
    if(nrow(dt)>0) dt
})

第二个选项:data.frames已在单独的变量中创建:

我们假设您的变量具有某种模式,比如patt:

 lapply(mget(ls(pattern=patt)),function(x)if(nrow(x)>0)x)

答案 1 :(得分:0)

要附加到列表,您可以

Your_list= list()
for(i in numbOfPosibleDF){
 k <- data.frame()
 if(nrow(k)!=0){
  Your_list[paste0(df,i)] = k
 }
}

答案 2 :(得分:0)

我只是将有效数据框添加到列表中,而不是之后删除它们。如果您想要或需要使用for循环(而不是lapply函数),您可以使用以下内容:

# init list
list.of.df <- list()
# start your loop to
# create data frame etc.
# ....
df <- data.frame(1,2)
# add to list
if (!is.null(df) && nrow(df)>0) list.of.df[[length(list.of.df)+1]] <- df
# ... end of loop here.

答案 3 :(得分:0)

为了任何人通过其标题找到这个其他死胡同页面的好处,连接作为列表项的一致格式化data.frames的方法是使用plyr:

rbind.fill.matrix(lst)

答案 4 :(得分:0)

我想更好地了解情景:

这些帧可能有也可能没有相同数量的列/行。

使用for循环动态生成数据帧。

帧具有所有数据类型:数字,因子,字符。