标题描述了我想要的东西:
而不是:
filter(mtcars, cyl == 8)
我想用:
var <- "cyl"
filter(mtcars, var == 8) # pseudocode
就像
一样mtcars[which(mtcars[,var]==8),]
我看到有类似的功能
starts_with()
但恕我直言,没有人真的适合上述相当简单的应用。
答案 0 :(得分:3)
试试这个:
mtcars %>% do(filter(., .[[var]] == 8))
答案 1 :(得分:2)
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
答案 2 :(得分:0)
这是do.call
的另一种方式:
do.call(filter, list(mtcars, bquote(.(as.name(var)) == 8)))