【问题标题】:Save the results of every iteration in the same data frame将每次迭代的结果保存在同一个数据框中
【发布时间】:2020-11-16 21:12:17
【问题描述】:

在循环中,将每次迭代的结果保存为数据帧的最佳方法是什么?

列名始终相同,但rbind存在行名重复的问题

我尝试了 cbind、rbind 和 merge,但一切都奏效了。

例子:

dfiteration <- data.frame()

dframe <- data.frame(id = c(1,2), other = c(1,4))

for (i in 1:3) {

dframe1 <- dframe

dfiteration <- rbind(dfiteration, dframe1)
}

【问题讨论】:

  • names(x$otherPkgs) 给你什么?
  • @CatalystRPA 它给了NULL
  • 我无法重现该错误。如果您的设置出现错误,只需重新启动 r/rstudio

标签: r


【解决方案1】:

这段代码对我来说很好用。您肯定没有提供数据来重现您的错误。

尝试使用dfiteration &lt;- base::rbind(dfiteration, dframe1) 以确保rbind 没有被您加载的另一个包屏蔽。您还可以发布 sessionInfo() 的全部结果,以便我们检查 R 版本和软件包。

同时,将rbind 中的make.row.names 参数更改为FALSE,这可能会起作用。

dfiteration <- base::rbind(dfiteration, dframe1, make.row.names=FALSE)

【讨论】:

    【解决方案2】:

    如果要单独保存每个数据帧,可以将迭代存储在列表中:

    dframe <- data.frame(id = c(1,2), other = c(1,4))
    mylist <- list()
    
    for (i in 1:3){
      dframe1 <- dframe
      mylist[[i]] <- dframe1
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多