如何在R中将字符串评估为变量?

时间:2019-07-17 17:59:55

标签: r paste

也许这是一个愚蠢的问题,但是我找不到解决方案。 我想使用2019-07-17 10:58:45.460986-0700 ProxyTest[2337:109309] integer value: 26 2019-07-17 10:58:45.461066-0700 ProxyTest[2337:109309] integer value: 8 2019-07-17 10:58:45.461140-0700 ProxyTest[2337:109309] integer value: 102 2019-07-17 10:58:45.461222-0700 ProxyTest[2337:109309] integer value: 65 2019-07-17 10:58:45.461311-0700 ProxyTest[2337:109309] integer value: 53 2019-07-17 10:58:45.461385-0700 ProxyTest[2337:109309] integer value: 2 2019-07-17 10:58:45.461448-0700 ProxyTest[2337:109309] integer value: 190 2019-07-17 10:58:45.461510-0700 ProxyTest[2337:109309] integer value: 784 2019-07-17 10:58:45.461563-0700 ProxyTest[2337:109309] integer value: 212 传递变量名,并使用变量名来评估paste()中的不等式,但是它返回0行,而不是我的预期输出

我尝试使用dplyr::filter()eval()失败

as.formula()

2 个答案:

答案 0 :(得分:1)

我们可以将变量名的字符串表示形式转换为符号,并用0取消引用:

!!

,或者如果我们不想加载library(dplyr) library(rlang) varname <- 'mpg' mtcars %>% filter(qsec >= !!sym(varname)) ,则使用as.name

rlang

输出:

library(dplyr)

varname <- 'mpg'
mtcars %>%
  filter(qsec >= !!as.name(varname))

答案 1 :(得分:0)

尽管我同意@avid_useR解决方案,但我也分享了一些想法:

如果我正确理解了您的问题,您是否希望xdecil对象指向另一个具有特定值的名为detro007的现有变量?在这种情况下,可以使用?get()函数将现有detro007变量的值分配给您创建的变量。

尝试:

library(dplyr)

dcl <- '07'
xdecil <- get(paste('detr0', dcl, sep=''))

final_cust <- cd_probs %>% filter(final_prob>=xdecil)