在 R 中使用值作为逻辑运算符
Use value as logical operator in R
下面有一个示例数据框以及一个逻辑运算符值:
data <- data.frame(
emp_id = c (1:5),
emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
salary = c(623.3,515.2,611.0,729.0,843.25)
)
operator <- ">="
有了这个,我想使用一个值来根据“运算符”值过滤此数据框。所以现在它被设置为“>=”,使代码看起来像这样:
new_data <- data %>%
filter(salary >= 600)
然后,如果我将运算符的值更改为“<=”,函数将更改为:
new_data <- data %>%
filter(salary <= 600)
这是 Shiny 应用程序的一部分,因此我会将几个运算符作为输入,因此理想情况下我不必使用 if/else 语句。如果我能做这样的事情就好了:
new_data <- data %>%
filter(salary operator 600)
但是,我不知道该怎么做或是否可行。感谢您的帮助!
我们可以用match.fun
library(dplyr)
data %>%
filter(match.fun(operator)(salary, 600))
-输出
emp_id emp_name salary
1 1 Rick 623.30
2 3 Michelle 611.00
3 4 Ryan 729.00
4 5 Gary 843.25
下面有一个示例数据框以及一个逻辑运算符值:
data <- data.frame(
emp_id = c (1:5),
emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
salary = c(623.3,515.2,611.0,729.0,843.25)
)
operator <- ">="
有了这个,我想使用一个值来根据“运算符”值过滤此数据框。所以现在它被设置为“>=”,使代码看起来像这样:
new_data <- data %>%
filter(salary >= 600)
然后,如果我将运算符的值更改为“<=”,函数将更改为:
new_data <- data %>%
filter(salary <= 600)
这是 Shiny 应用程序的一部分,因此我会将几个运算符作为输入,因此理想情况下我不必使用 if/else 语句。如果我能做这样的事情就好了:
new_data <- data %>%
filter(salary operator 600)
但是,我不知道该怎么做或是否可行。感谢您的帮助!
我们可以用match.fun
library(dplyr)
data %>%
filter(match.fun(operator)(salary, 600))
-输出
emp_id emp_name salary
1 1 Rick 623.30
2 3 Michelle 611.00
3 4 Ryan 729.00
4 5 Gary 843.25