Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用dplyr::summary_at()将列名传递给R中的模型公式_R_Dplyr - Fatal编程技术网

如何使用dplyr::summary_at()将列名传递给R中的模型公式

如何使用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

我试图从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:

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我现在不在电脑旁。如果你说,你得到相同的值,所说的是不正确的。