如何提供(逻辑)运算符作为函数的参数

use*_*672 3 arguments r function operators

是否可以提供逻辑(或算术)运算符作为 R 函数的参数。检查这个共享主题的SO问题。

f1 <- function(a, b) a>b
Run Code Online (Sandbox Code Playgroud)

然后

> f1(1,2)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

我如何实现允许我更改功能测试的运算符,例如

f2 <- function(a, b, operator = c('<', '>', '==')) { ... }
Run Code Online (Sandbox Code Playgroud)

那我愿意

> f2(1, 2, '<')
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

Rol*_*and 5

在 R 中,所有运算符都是函数。因此,您只需要获取运算符函数并调用它即可。

f2 <- function(a, b, operator) getFunction(operator)(a, b)
f2(1, 2, '<')
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)