也许这是一个愚蠢的问题,但是我找不到解决方案。我想使用传递变量名paste()
,并使用变量名计算内的不等式dplyr::filter()
,但它返回0行,而不是我的预期输出
我尝试使用eval()
,并as.formula()
没有成功
library(dplyr)
dcl <- '07'
xdecil <- paste('detr0', dcl, sep='')
final_cust <- cd_probs %>% filter(final_prob>=xdecil)
我们可以将变量名称的字符串表示形式转换为符号,并用!!
以下符号取消引用:
library(dplyr)
library(rlang)
varname <- 'mpg'
mtcars %>%
filter(qsec >= !!sym(varname))
或者as.name
如果我们不想加载rlang
:
library(dplyr)
varname <- 'mpg'
mtcars %>%
filter(qsec >= !!as.name(varname))
输出:
mpg cyl disp hp drat wt qsec vs am gear carb
1 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
2 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
3 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
4 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
5 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
6 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
7 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
8 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
9 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
10 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
11 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
12 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
13 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句