変数参照が".$mpg"
.
hereを読んだ後、変数名を与える文字列があるので、 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
、上で述べたように、これはうまくいかないようです。