可変参照が".$mpg"
の形式である場合、dplyrでのNSEの動作を理解できますか?dplyrのdo()を使用した複雑な式のNSE
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")
:
は最終的に、私はこのような機能にこれを有効にするmiles
が.$mpg
に置き換えになるだろう interp(~var, var = as.name(miles)
、しかしとして私はこれが動作していないトップに言及した。