[英]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.