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)
如何使用循环(或其他东西)更有效地多次运行此函数?
该purrr
软件包为此提供了一个非常方便的功能。map
工作原理类似于apply
Base 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)