[R] How to define new operator in R?

Spencer Graves spencer.graves at structuremonitoring.com
Wed Mar 30 23:05:18 CEST 2011


       '+' is a generic function, so different methods can be defined 
for different classes of objects.  Consider the following:


  methods('+')
[1] +.Date   +.POSIXt # Methods defined for 'Date' and 'POSIXt' objects

 > args('+.Date') # standard argument names are e1 and e2
function (e1, e2)
NULL
 > '+.x' <- function(e1, e2)e1*e2 # Define '+' for an object of class 'x'
 > methods('+')
[1] +.Date   +.POSIXt +.x  # Confirm:  "+.x" defined.


 > xx <- 3
 > class(xx) <- 'x' # Create an object of class 'x'
 > xx+2 # 3+2=6, right?
[1] 6
attr(,"class")
[1] "x"
 >

       Enjoy.
       Spencer


On 3/30/2011 1:31 PM, baptiste auguie wrote:
> Hi,
>
> Also, try this and rm() it immediately,
>
> `+`<- function(x, y) x - y
>
> 1+1
> rm(`+`)
> 1+1
>
> baptiste
>
> On 31 March 2011 05:04, Chuanlong Du<dclong at iastate.edu>  wrote:
>> Hello, everyone!
>>
>> Does anyone know how make some symbols have special means in R? For example,
>> we know that "+" in R means the sum of the two operand on its left and
>> right. I want to define some operators in R by myself. Is this possible?
>>
>> Regards!
>>
>> --
>> Chuanlong Du
>> Department of Statistcis
>> Iowa State University
>> Ames, IA, US 50011
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>

-- 
Spencer Graves, PE, PhD
President and Chief Operating Officer
Structure Inspection and Monitoring, Inc.
751 Emerson Ct.
San José, CA 95126
ph:  408-655-4567



More information about the R-help mailing list