循环遍历函数并将输出堆叠到 R 中的数据集中

Kat*_*e N 1 loops r function dplyr

我编写了一个运行线性模型并输出数据帧的函数。我想多次运行该函数并堆叠输出。这是一个假设的数据集和函数:

data = data.frame(grade_level = rep(1:4, each = 3),
                  x = rnorm(12, mean = 21, sd = 7.5),
                  y = rnorm(12, mean = 20, sd = 7)) 

func = function(grade){
  model = lm(y ~ x, data=data[data$grade_level == grade,])
  fitted.values = model$fitted.values 
  final = data.frame(grade_level = data$grade_level[data$grade_level == grade],
                     predicted_values = fitted.values)
  final
  }
Run Code Online (Sandbox Code Playgroud)

目前,我在数据集中的每个年级运行该函数:

grade1 = func(1)
grade2 = func(2)
grade3 = func(3)
grade4 = func(4)

pred.values = rbind(grade1, grade2, grade3, grade4)
Run Code Online (Sandbox Code Playgroud)

如何使用循环(或其他东西)更有效地多次运行此函数?

Bri*_*iro 5

purrr软件包为此提供了一个非常方便的功能。map工作原理类似于applyBase R 中的函数系列(for在很多方面都像循环一样运行)。指定_dfr您要rbind在返回之前调用结果。

这个函数说:“循环遍历c(1, 2, 3, 4),每次调用func()每个,然后将rbind结果返回data.frame给我。”

purrr::map_dfr(1:4, func)
Run Code Online (Sandbox Code Playgroud)