【问题标题】:Creating different dataframes in for loop在 for 循环中创建不同的数据框
【发布时间】:2021-08-01 00:15:48
【问题描述】:

我有一系列列表 (list1,list2,list3,...,listn) 具有相似的结构和不同的信息。

我想要做的是将这些列表放入数据框形式,并在 for 循环中删除我不需要的变量。

最后,我想要 (df1,...,dfn),从列表中派生。

我试过了:

for (list in c("list1","list2"...,"listn")){
  for (i in (1:n)){
    assign(paste0("DF", i)) <- plyr::ldply(list)
    DFi = DFi[,c("tokeep1",..."tokeepn")]
  }
}

我猜这段代码不太正确,实际上它不起作用。

我总是卡在类似的问题上(在 for 循环中创建一系列不同的 df)并且还没有找到解决方案,所以尽管询问可能会有所帮助。

谢谢, 咻

【问题讨论】:

  • 这里的assign 位在概念上和实践中基本上都不能以这种方式工作。 不要创建多个附加数字的变量。相反,请使用列表。 IE。有DF = list() 并在循环内分配给DF[[i]]。更好的是,将这些数据框合并到一个大表中。尝试在循环中创建变量是一个令人惊讶的常见错误。但它从来都不是正确的方法

标签: r list dataframe for-loop


【解决方案1】:

我同意@Konrad。最好将您的操作结果分配给一个列表,您可以通过[[]] 访问所需的数据框。这是一个例子:

l1 <- list(a=1:10,b=2:11,c=3:12)
l2 <- list(d=1:10,e=2:11,f=3:12)
l3 <- list(g=1:10,h=2:11,i=3:12)

tokeep <- function(x){as.data.frame(x)[,c(1,3)]}

dfs <- lapply(list(l1,l2,l3), tokeep)
#access to object inside the list
df1 <- dfs[[1]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 2021-02-12
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多