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工作原理类似于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)
| 归档时间: |
|
| 查看次数: |
724 次 |
| 最近记录: |