DPLYR :: Manip:文字列名の代わりに文字列引数を使用する方法(COLNAMESを保持)

StackOverflow https://stackoverflow.com//questions/25075312

  •  26-12-2019
  •  | 
  •  

質問

タイトルは私が欲しいものをかなり説明しています:

filter(mtcars, cyl == 8)
.

私は使いたいです:

var <- "cyl"
filter(mtcars, var == 8)  # pseudocode
.

のように

mtcars[which(mtcars[,var]==8),]
.

のような機能があることがわかります starts_with() しかし、imhoなし、上のどちらのかなり簡単なアプリケーションに本当にスーツを取得していません。

役に立ちましたか?

解決

これを試してみてください:

mtcars %>% do(filter(., .[[var]] == 8))
.

他のヒント

eval(substitute(filter(mtcars, var == 8),list(var=as.name(var))))%>%
head(2)
#    mpg cyl disp  hp drat   wt  qsec vs am gear carb
# 1 18.7   8  360 175 3.15 3.44 17.02  0  0    3    2
# 2 14.3   8  360 245 3.21 3.57 15.84  0  0    3    4

filter(mtcars, get(var, envir=as.environment(mtcars)) == 8) #should also work but not recommended
.

do.call

のもう1つの方法
do.call(filter, list(mtcars, bquote(.(as.name(var)) == 8)))
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top