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