r - 将运算符分配给 R 变量

标签 r function operators

我正在尝试创建一个函数,用户可以在其中选择他们想要使用的运算符,从而产生不同的输出。但我似乎无法让它发挥作用。我知道我们不能将运算符分配给 R 对象,然后根据 R 对象名称将其用作运算符。有没有办法做到这一点?或者也许是编写函数的更好方法?

test <- function(items, operator = "+"){
bank_alpha <- matrix(ncol=6)
colnames(bank_alpha) <- colnames(bank_alpha, do.NULL = FALSE, prefix = "Q")
colnames(bank_alpha)[6] <- "A"
alphabet <- LETTERS[seq(1:26)]

 for (i in 1:items) {
  item <- c(alphabet[i], alphabet[i operator 1], alphabet[i operator  2], alphabet[i operator  3], alphabet[i operator  4], alphabet[i operator 5])
  bank_alpha <- rbind(bank_alpha, item)
  bank_alpha <- na.omit(bank_alpha)
}
return(bank_alpha)
}

  test(items=4, operator = "-") 

最佳答案

您可以使用 get()在功能上动态调用运算符函数,例如:

> get('+')(5, 2)
[1] 7
get() function 接受一个字符串作为输入,并返回对与该字符串对应的函数的引用(如果存在)。

通常使用左侧一个函数参数和右侧一个函数参数调用运算符(例如 5 + 2 )。
+然而,运算符函数本身只需要两个参数作为输入:
> args('+')
function (e1, e2) 
NULL

这就是为什么我们可以像上面那样称呼它。

关于r - 将运算符分配给 R 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316116/

相关文章:

r - 为什么 na.omit 向空数据框添加一行?

javascript - 让函数等到元素存在

string - 使用字符串作为函数名 - golang

javascript - 输入字符 Controller

php 不等于,不等于,等于

r - 安装 dplyr 给了我旧版本

r - 计算矩阵 R 中列表中的项目数

operators - 是否可以链接元运算符来计算 Raku 中两个列表的乘积和?

c++ - 为什么在语句中的其他任何地方都没有使用该值的情况下使用++i 而不是 i++ ?

r - 何时使用缺失值与 NULL 值在 R 中传递未定义的函数参数,为什么?