在R中使用数值作为逻辑运算符

3
我有一个样例数据框和逻辑运算符的值如下:
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)

然而,我不知道如何做到这一点或者它是否可行。感谢帮助!

1个回答

3

我们可以使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接