[英]How to evaluate a string as a variable in R?
也许是一个愚蠢的问题,但我找不到解决方案。 我想使用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
虽然我同意@avid_useR 的解决方案,但我分享了一些我的想法:
如果我正确理解您的问题,您是否希望xdecil
对象指向另一个名为detro007
且具有特定值的现有变量? 如果是这种情况,您可以使用?get()
函数将现有detro007
变量的值分配给您创建的变量。
尝试:
library(dplyr)
dcl <- '07'
xdecil <- get(paste('detr0', dcl, sep=''))
final_cust <- cd_probs %>% filter(final_prob>=xdecil)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.