【问题标题】:Using purrr::map to iterate linear model over columns in data frame使用 purrr::map 在数据框中的列上迭代线性模型
【发布时间】:2016-12-13 00:48:46
【问题描述】:

我正在尝试做一个练习来更加熟悉如何在 purrr 中使用地图功能。我正在创建一些随机数据(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)

在这里,我卡住了:

map(df_of_vecs, ~ lm(df_of_vecs[[1]] ~ . ?)

任何提示将不胜感激。

谢谢。

【问题讨论】:

    标签: r purrr


    【解决方案1】:

    您需要从列名构造公式,然后映射lm 作为最后一步。你可以通过两个maps 来做到这一点:

    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))
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多