在 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