【问题标题】:Stacking dataframes from output of iterated function in R从 R 中的迭代函数的输出中堆叠数据帧
【发布时间】:2020-09-02 20:33:49
【问题描述】:

我已经编写了一个函数并尝试进行迭代,以便列表中的每个值都成为函数的输入一次。

repeat100 <- function(B) {
  se100 <- replicate(100, bootandse(B))
  bandse <- data.frame("B" = B, "SE" = se100)
}

此函数的输出是一个数据框,其中一列用于输入的 B 的值,另一列用于 SE。像这样,但有 100 行。

B  SE
1  2
1  4
1  3

我有一个具有多个值的对象 B。我正在尝试在 B 的每个值上迭代 repeat100()。

B <- c(1, 4, 6, 20, 30)

如何让结果输出成为一个数据帧,其中每个重复100() 的输出对于 B 的每个值都像这样堆叠?

B  SE 
1  2
1  3
1  2 
4  5
4  3 
4  2

【问题讨论】:

  • 什么是bootandse?再次与之前的帖子一样,提供一些数据进行复制。谢谢!

标签: r loops apply tidyverse


【解决方案1】:

我们可以从data.table使用rbindlist

library(data.table)
rbindlist(lapply(B, repeat100))

【讨论】:

    【解决方案2】:

    使用lapplyrbind 将数据合并到一个数据帧中。

    result <- do.call(rbind, lapply(B, repeat100))
    

    purrr::map_df 更短。

    purrr::map_df(B, repeat100)
    

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 2014-09-16
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      相关资源
      最近更新 更多