R:如何在列表中附加数据帧?

R:如何在列表中附加数据帧?,r,R,我正在尝试使用for循环生成数据帧。 如何将这些数据帧附加到列表中,然后检查任何帧是否为空? 我想从列表中删除具有空行的数据帧 非常感谢您的帮助您应该在此处使用lappy,而不使用for循环。优点是: 您想创建一个数据列表。frame和lappy创建一个列表 你只做一次,不需要做两个循环 比如: lapply(seq_len(nbr_df),function(x) { ## code to create you data.frame dt ## dt =

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


非常感谢您的帮助

您应该在此处使用
lappy
,而不使用
for
循环。优点是:

  • 您想创建一个数据列表。frame和lappy创建一个列表
  • 你只做一次,不需要做两个循环
比如:

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)

要附加到列表中,您可以

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

k我只会将有效的数据帧添加到列表中,而不是随后删除它们。如果您想要或需要使用for循环(而不是
lappy
函数),可以使用以下方法:

# 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.
#初始化列表

list.of.df为了便于任何人通过标题找到这一本死路一条的页面,连接格式一致的数据的方法是使用plyr:

rbind.fill.matrix(lst)

我想更好地描述一下这种情况:

框架的列/行数可能相同,也可能不同

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


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

Hi,运行此代码时出现以下错误:“if(nrow(transformed)>0)transformed}”中的错误:error:unexpected')。首先,此答案不正确。第二,它不考虑任何规定的要求。最后,是标题,而不是可以解释整个问题的概述。显然,存在歧义的可能性。然后您可能希望将其重命名为“将数据帧附加到列表”。更重要的是,请参阅有关如何使用SO的说明。你应该接受(勾选)最好的答案来结束你的问题。这也是一个很好的实践,(a)演示和描述您如何尝试解决问题,以及(b)提供一个重复的失败示例,因为这(c)有助于减少歧义的风险。嗨,丹尼尔,真正的问题是,因为帧是在循环中生成的。空数据帧正在终止我的循环。当我测试有效性并尝试继续下一次迭代时,我会得到新的错误集。