且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在dplyr函数中使用变量名

更新时间:2023-11-10 12:44:28

在较新的版本中,我们可以使用创建带引号的变量,然后取消引号(UQ!!)进行评估

In the newer versions, we can use we can create the variables as quoted and then unquote (UQ or !!) for evaluation

var <- quo(color)
filter(df, UQ(var) == "blue")
#   color value
#1  blue     1
#2  blue     3
#3  blue     4

由于运算符的优先级,我们可能要求()环绕!!

Due to operator precedence, we may require () to wrap around !!

filter(df, (!!var) == "blue")
#   color value
#1  blue     1
#2  blue     3
#3  blue     4

在新版本中,||具有更高的优先级,因此

With new version, || have higher precedence, so

filter(df, !! var == "blue")

应该工作(如@Moody_Mudskipper所评论)

should work (as @Moody_Mudskipper commented)

我们也可以使用:

 filter(df, get(var, envir=as.environment(df))=="blue")
 #color value
 #1  blue     1
 #2  blue     3
 #3  blue     4

重新排列了解决方案的顺序

Rearranged the order of solutions