Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr::manip:如何使用字符串参数(包含colnames)而不是列名_R_Dplyr - Fatal编程技术网

dplyr::manip:如何使用字符串参数(包含colnames)而不是列名

dplyr::manip:如何使用字符串参数(包含colnames)而不是列名,r,dplyr,R,Dplyr,标题大致描述了我想要的: 而不是: filter(mtcars, cyl == 8) 我想使用: var <- "cyl" filter(mtcars, var == 8) # pseudocode 我看到有这样的功能 以()开始。\u 但我认为没有一个真正适合上述相当简单的应用程序。试试这个: eval(substitute(filter(mtcars, var == 8),list(var=as.name(var))))%>% head(2) # mpg cyl di

标题大致描述了我想要的:

而不是:

filter(mtcars, cyl == 8)
我想使用:

var <- "cyl"
filter(mtcars, var == 8)  # pseudocode
我看到有这样的功能
以()开始。\u
但我认为没有一个真正适合上述相当简单的应用程序。

试试这个:

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
mtcars %>% do(filter(., .[[var]] == 8))

还有一种方法可以使用
do.call

do.call(filter, list(mtcars, bquote(.(as.name(var)) == 8)))

刚才看到这有点关系,它目前不受支持,但我正在努力:这个功能现在已经实现。不需要解决方法。要避开非标准的评估,请使用
manip\uz()
flavor,例如
filter\uz()
<代码>渐晕(“nse”)详细说明了这一点。谢谢@hadley从您的回答中我得出结论,目前dplyr不支持字符串参数。是吗?@Jan,是的,如果我没弄错的话。好吧,这样回答了我的问题。虽然不是很令人满意@但这不是你的错。谢谢你,伙计。
do.call(filter, list(mtcars, bquote(.(as.name(var)) == 8)))