【问题标题】:Refer to primitive operator in R [duplicate]参考R中的原始运算符[重复]
【发布时间】:2020-08-19 13:19:36
【问题描述】:

我是 Python 中用于字符串连接的 + 运算符的忠实粉丝。我想扩展/自定义 + 运算符以在 R 中做同样的事情。

这是我目前所拥有的:

`+` <- function(a, b){
    if(is.numeric(a)){
        sum(a, b)
    }else{
        paste0(a, b)
    }

这很好用,但在一些速度测试中,与原始/原始+ 相比表现不佳。那么,如何在函数的第二行引用原语+ 而不是sum()?如果我只使用+,当然R 会通过无限递归给我一个node stack overflow

【问题讨论】:

  • 我正在寻找的答案是.Primitive("+")(x,y)

标签: r primitive-types


【解决方案1】:

(重复问题中提供的答案是另一种选择,可能更简洁,因为它没有添加其他功能。)

将原语保存为另一个函数。在这里,我将使用一个“特殊”函数%plus%(以便可以内联),但如果您愿意,也可以简单地使用plus

`%plus%` <- `+`
`+` <- function(e1, e2) if (is.numeric(e1)) `%plus%`(e1, e2) else paste0(e1, e2)
1+2
# [1] 3
'a'+'b'
# [1] "ab"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 2018-06-22
    • 2011-09-28
    相关资源
    最近更新 更多