使用 purrr::map 在数据框中的列上迭代线性模型
Using purrr::map to iterate linear model over columns in data frame
我正在尝试做一个练习,以更加熟悉如何在 purrr 中使用地图功能。我正在创建一些随机数据(10 个数据点的 10 列),然后我想使用 map 对数据框中的结果列执行一系列回归(即 lm(y ~ x, data = ))。
如果我只是重复使用第一列作为 'y',我想对每一列从 1 到 10 执行 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)
这里,我卡住了:
map(df_of_vecs, ~ lm(df_of_vecs[[1]] ~ . ?)
如有任何提示,我们将不胜感激。
谢谢。
您需要从列名构造公式,然后映射 lm
作为最后一步。你可以用两个 map
s:
library(purrr)
df_of_vecs %>%
names() %>%
paste('vec_1 ~', .) %>%
map(as.formula) %>%
map(lm, data = df_of_vecs)
或一个:
df_of_vecs %>%
names() %>%
paste('vec_1 ~', .) %>%
map(~lm(as.formula(.x), data = df_of_vecs))
两者return相同的十个模型列表。
我正在尝试做一个练习,以更加熟悉如何在 purrr 中使用地图功能。我正在创建一些随机数据(10 个数据点的 10 列),然后我想使用 map 对数据框中的结果列执行一系列回归(即 lm(y ~ x, data = ))。
如果我只是重复使用第一列作为 'y',我想对每一列从 1 到 10 执行 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)
这里,我卡住了:
map(df_of_vecs, ~ lm(df_of_vecs[[1]] ~ . ?)
如有任何提示,我们将不胜感激。
谢谢。
您需要从列名构造公式,然后映射 lm
作为最后一步。你可以用两个 map
s:
library(purrr)
df_of_vecs %>%
names() %>%
paste('vec_1 ~', .) %>%
map(as.formula) %>%
map(lm, data = df_of_vecs)
或一个:
df_of_vecs %>%
names() %>%
paste('vec_1 ~', .) %>%
map(~lm(as.formula(.x), data = df_of_vecs))
两者return相同的十个模型列表。