R - subset() 中的逻辑运算符是一个字符串

R - Logical operator in subset() is a string

我觉得我有一个简单的问题,但我无法让我的代码工作。简而言之,我希望 subset() 函数中的条件语句是一个字符串。这主要是有效的,除了逻辑运算符。所以我想要这样的东西;

my.string = "gender == female"

以后我会运行;

myData = subset(myData, my.string)

我尝试过类似的东西;

myData = subset(myData, parse(text = my.string))
myData = subset(myData, eval(parse(text = my.string)))

但无济于事。我想这样做的主要原因是因为我希望您能够在代码中预先设置过滤条件,所以这将是;

filter.variable[[1]] = "gender"
filter.condition[[1]] = "==" # or %in%
filer.value[[1]] = "female"
i = 1
my.string = paste(filter.variable[[i]],filter.condition[[i]],filter.value[[i]])

这样我就不必在 R 中硬连接任何过滤器。 非常感谢任何建议, 亚历克斯

我们需要在 'female' 周围加上引号,即这可以在 dQuote

中轻松完成
my.string <- paste0('gender == ', dQuote('female', FALSE))

或者可以用 " wrapped

来做到这一点
my.string = 'gender== "female"'

然后在 subseteval(parse

中使用它

使用可重现的例子

my.string <- paste0('Species == ', dQuote('setosa', FALSE))
subset(iris, eval(parse(text = my.string)))
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1           5.1         3.5          1.4         0.2  setosa
#2           4.9         3.0          1.4         0.2  setosa
#3           4.7         3.2          1.3         0.2  setosa
#4           4.6         3.1          1.5         0.2  setosa
#5           5.0         3.6          1.4         0.2  setosa
#6           5.4         3.9          1.7         0.4  setosa
#7           4.6         3.4          1.4         0.3  setosa
#8           5.0         3.4          1.5         0.2  setosa
# ...