在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”中。但是,我似乎无法存储运算符并在子集函数中使用它。以后要使用此运算符进行子集化。没有这个,我将需要复制并粘贴整个代码,以便使用其他运算符。有什么优雅而简单的方法可以解决这个问题吗?
预先感谢
答案 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