我喜欢用粘贴重载我的&符号运算符。这样我就可以轻松粘贴东西了。像这样:
R> "Hello" & " World"
[1] "Hello World"
我实现这一目标的方式是:
"&" <- function(...){paste(..., sep = "")}
这一切都很好,但是你失去了使用&符作为自然“和”操作符的能力。什么是最好,最快最美的方式来重载我的&符号,以便它能识别输入是否合乎逻辑?
TRUE & FALSE == FALSE
等
答案 0 :(得分:5)
您需要在R:
中使用S3对象系统`&` <- function(e1, e2) UseMethod("&", c(e1, e2))
`&.default` <- function(e1, e2) paste(e1, e2)
`&.logical` <- function(e1, e2) .Primitive("&")(e1, e2)
现在您可以按预期使用&
:
> 1 & 2
[1] "1 2"
> TRUE & FALSE
[1] FALSE
> "Hello" & "World"
[1] "Hello World"
>
答案 1 :(得分:4)
我认为定义&.default
使用paste
是错误的:
`&` <- function(e1, e2) UseMethod("&", c(e1, e2))
`&.default` <- function(e1, e2) .Primitive("&")(e1, e2)
`&.character` <- function(e1, e2) paste(e1, e2)
"Hello" & "World"
[1] "Hello World"
1*0
#[1] 0
1&0
#[1] FALSE
1&1
#[1] TRUE