根据命令存储和使用运算符

时间:2019-05-14 07:38:36

标签: r operators

在if和else函数中,如何(也可以)在命令上使用不同的运算符?

x <- as.numeric(c(1,1,4,5,6,7,8))

if(mean(x) < 3){operator.is <- <}else{operator.is <- >}

sub <- subset(x, x operator.is 2)

#expected results
sub
[1] 3 4 5 6 7 8

我想基于if语句将运算符存储在“ operator.is”中。但是,我似乎无法存储运算符并在子集函数中使用它。以后要使用此运算符进行子集化。没有这个,我将需要复制并粘贴整个代码,以便使用其他运算符。有什么优雅而简单的方法可以解决这个问题吗?

预先感谢

2 个答案:

答案 0 :(得分:0)

可以为

操作员分配%符号:

`%op%` = `>`

vector <- c(1:10)

vector2 <- subset(vector, vector %op% 5)

在您的情况下:

x <- as.numeric(c(1,1,4,5,6,7,8))

if(mean(x) < 3){`%operator.is%` <- `<`}else{`%operator.is%` <- `>`}

sub <- subset(x, x %operator.is% 2)

答案 1 :(得分:0)

x <- as.numeric(c(1,1,4,5,6,7,8))

if(mean(x) < 3){`%my_op%` <- `<`}else{`%my_op%` <- `>`}

sub <- subset(x, x %my_op% 2)
sub
##[1] 4 5 6 7 8

“定义自己的中缀运算符时要记住的是,它们必须以%开头和结尾。在函数定义中用反斜杠(`)引起来,并转义任何特殊符号。”

来自https://www.datamentor.io/r-programming/infix-operator/

更好地跟随@Oliver的脚步而已

x <- as.numeric(c(1,1,4,5,6,7,8))

if(mean(x) < 3){operator.is <- `<`}else{operator.is <- `>`}

sub <- subset(x, operator.is(x,2))
sub
##[1] 4 5 6 7 8