Overloading Ampersand & operator in R

前端 未结 2 974
小鲜肉
小鲜肉 2021-01-22 10:14

I like to overload my ampersand operator with paste. So that way I can paste stuff easily. Like this:

R> \"Hello\" & \" World\"
 [1] \"Hello World\"


        
相关标签:
2条回答
  • 2021-01-22 10:40

    I think defining &.default to use paste is just wrong:

    `&` <- 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
    
    0 讨论(0)
  • 2021-01-22 10:53

    You'll need to use the S3 object system in R:

    `&` <- function(e1, e2) UseMethod("&", c(e1, e2))
    `&.default` <- function(e1, e2) paste(e1, e2)
    `&.logical` <- function(e1, e2) .Primitive("&")(e1, e2)
    

    Now you can use & as you would expect:

    > 1 & 2
    [1] "1 2"
    > TRUE & FALSE
    [1] FALSE
    > "Hello" & "World"
    [1] "Hello World"
    > 
    
    0 讨论(0)
提交回复
热议问题