首页 > 解决方案 > 从 R 中的迭代函数的输出中堆叠数据帧

问题描述

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

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

标签: rloopsapplytidyverse

解决方案


使用lapplywithrbind将数据合并到一个数据框中。

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

或者purrr::map_df哪个更短。

purrr::map_df(B, repeat100)

推荐阅读