当变量引用为".$mpg"
.
读完这里之后,我认为使用 as.name 就可以了,因为我有一个字符串,它给出了一个变量名。
例如,这有效:
mtcars %>%
summarise_(interp(~mean(var), var = as.name("mpg")))
这不起作用:
mtcars %>%
summarise_(interp(~mean(var), var = as.name(".$mpg")))
但这确实:
mtcars %>%
summarise(mean(.$mpg))
这也是:
mtcars %>%
summarise(mean(mpg))
我希望能够在表单中指定变量,.$mpg
以便当我没有为数据指定点的选项时可以将它与 do() 一起使用,如下例所示:
library(dplyr)
library(broom)
mtcars %>%
tbl_df() %>%
slice(., 1) %>%
do(tidy(prop.test(.$mpg, .$disp, p = .50)))
- 这里选择了随机变量来演示 prop.test 函数是如何工作的,请不要将此解释为滥用测试。
最终,我想把它变成这样的函数:
library(lazyeval)
library(broom)
library(dplyr)
p_test <- function(x, miles, distance){
x %>%
tbl_df() %>%
slice(., 1) %>%
do_(tidy(prop.test(miles, distance, p = .50)))
}
p_test(mtcars, ".$mpg", ".$disp")
我最初认为我必须做类似的事情:
interp(~var, var = as.name(miles)
wheremiles
将被替换为.$mpg
,但正如我在顶部提到的那样,这似乎不起作用。