【问题标题】:R: creating multiple dataframes using for loop is only storing final dataframe to listR:使用 for 循环创建多个数据帧仅将最终数据帧存储到列表
【发布时间】:2022-01-05 19:56:48
【问题描述】:

我正在尝试使用 for 循环创建多个命名数据框。我正在使用的代码的简化版本如下。我想保持循环的结构尽可能相似,因为我正在做更复杂的分析。我遇到的问题是只有最后一个数据帧被存储到列表中。列表中的所有其他项目都是空的。是什么导致了这种行为,我该如何编辑代码来修复它?

dfs = list()
df.names = c("a", "b", "c")
for (i in length(df.names)) {
  df = data.frame()
  tmp = data.frame(x = 1, y = 2, z = 3)
  df = rbind(df,tmp)
  dfs[[i]] = df
}
names(dfs) = df.names

【问题讨论】:

    标签: r dataframe for-loop


    【解决方案1】:

    你的 for 循环应该是:

    for (i in 1:length(df.names))
    

    因为length(df.names) 是单个值 (3)。正如你所拥有的,它显示为“for i in 3”。

    如 cmets 中所述,您还可以使用:

    for (i in seq_along(df.names))
    

    如果df.names 为空,则循环不会执行而不是引发错误。

    【讨论】:

    • 更好的是 for (i in seq_along(df.names))
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2022-06-29
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多