如何使用dplyr::summary_at()将列名传递给R中的模型公式
我试图从R中的一系列模型中获得一些汇总统计数据 例如,我可以将变量传递给公式的LHS:如何使用dplyr::summary_at()将列名传递给R中的模型公式,r,dplyr,R,Dplyr,我试图从R中的一系列模型中获得一些汇总统计数据 例如,我可以将变量传递给公式的LHS: library(tidyverse) mtcars %>% summarise_at(vars(cyl:hp), list( r = ~summary(lm(formula = . ~ mpg))$r.squared )) cyl_r disp_r hp_r 1 0.72618 0.7183433 0.6024373 但我似乎无法将变量传递给RHS: mtca
library(tidyverse)
mtcars %>%
summarise_at(vars(cyl:hp), list(
r = ~summary(lm(formula = . ~ mpg))$r.squared
))
cyl_r disp_r hp_r
1 0.72618 0.7183433 0.6024373
但我似乎无法将变量传递给RHS:
mtcars %>%
summarise_at(vars(cyl:hp), list(
r = ~summary(lm(formula = mpg ~ .))$r.squared
))
Error in terms.formula(formula, data = data) :
'.' in formula and no 'data' argument
有没有办法做我想做的事?我模模糊糊地意识到我可能应该使用purr::map或其他东西,但我在那里的实验失败了
提前谢谢
✔ GG2.3.2.1✔ purrr 0.3.3✔ tibble 2.1.3✔ dplyr 0.8.3
✔ tidyr 1.0.0✔ stringr 1.4.0
✔ readr 1.3.1✔ 猫类0.4.0
我不太清楚第一个是如何工作的,但是使用
.x
而不是
似乎是可行的
library(dplyr)
mtcars %>%
summarise_at(vars(cyl:hp), list(
r = ~summary(lm(formula = mpg ~ .x))$r.squared
))
# cyl_r disp_r hp_r
#1 0.72618 0.71834 0.60244
这就是你在这里工作的方式吗?我希望它单独传递每个变量名,消息是说没有数据。所以,
r=~summary(lm(formula=mpg~,data=mtcars))$r.squared
可能是一个不错的选择?谢谢,这很管用,今天就省去了我的麻烦-但仍然很好奇为什么第一个示例有效,而第二个示例需要数据参数。是否有一种方法可以将数据参数作为变量传递,这样我就不必在每次数据帧名称更改时都更新此代码?@jazzurro是否给出了正确的值?我得到了所有的r.squared
值。@RonakShah我现在不在电脑旁。如果你说,你得到相同的值,所说的是不正确的。