我正在尝试做一个练习,以便更熟悉如何在purrr中使用map函数.我正在创建一些随机数据(10列10个数据点),然后我想使用map在数据框中的结果列上执行一系列回归(即lm(y~x,data =)).
如果我只是重复使用第一列为'y',我想要执行10次回归,每列从1到10为'x'.显然结果并不重要 - 它只是方法.我想最终得到10个线性模型对象的列表.
list_of_vecs <- list()
for (i in 1:10){
list_of_vecs[[paste('vec_', i, sep = '')]] <- rnorm(10,0,1)
}
df_of_vecs <- as.data.frame(list_of_vecs)
Run Code Online (Sandbox Code Playgroud)
在这里,我卡住了:
map(df_of_vecs, ~ lm(df_of_vecs[[1]] ~ . ?)
Run Code Online (Sandbox Code Playgroud)
任何提示将不胜感激.
谢谢.
您需要从列名构造公式,然后映射lm为最后一步.你可以用两个maps 做到这一点:
library(purrr)
df_of_vecs %>%
names() %>%
paste('vec_1 ~', .) %>%
map(as.formula) %>%
map(lm, data = df_of_vecs)
Run Code Online (Sandbox Code Playgroud)
或者一个:
df_of_vecs %>%
names() %>%
paste('vec_1 ~', .) %>%
map(~lm(as.formula(.x), data = df_of_vecs))
Run Code Online (Sandbox Code Playgroud)
两者都返回十个模型的相同列表.
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |