簡體   English   中英

R - 子集()中的邏輯運算符是一個字符串

[英]R - Logical operator in subset() is a string

我覺得我有一個簡單的問題,但我無法讓我的代碼正常工作。 簡而言之,我希望一個子集() function 中的條件語句是一個字符串。 這主要是有效的,除了邏輯運算符。 所以我想要這樣的東西;

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 中硬連線任何過濾器。 任何建議都非常感謝,亞歷克斯

我們需要在“女性”周圍加上引號,即這可以在dQuote中輕松完成

my.string <- paste0('gender == ', dQuote('female', FALSE))

或者可以用"包裹”來做到這一點

my.string = 'gender== "female"'

然后在subset eval(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
# ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM