使用purrr :: map在数据框中的列上迭代线性模型

时间:2016-12-13 00:48:47

标签: r purrr

我正在尝试练习以更熟悉如何在purrr中使用map函数。我正在创建一些随机数据(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]] ~ . ?)

任何提示都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:6)

您需要从列名构建公式,然后将'use strict'; window.addEventListener('readystatechange', function(e) { console.log(window, e); });映射为最后一步。您可以使用两个lm s执行此操作:

map

或者一个:

library(purrr)

df_of_vecs %>% 
    names() %>% 
    paste('vec_1 ~', .) %>% 
    map(as.formula) %>% 
    map(lm, data = df_of_vecs)

两者都返回十个模型的相同列表。