[R] how to overwrite a Unary operator ?

PO SU rhelpmaillist at 163.com
Sun Oct 19 19:13:50 CEST 2014


TKS , but i still have a question that maybe i can write a new S3 method for +, but how can i create a new operator which can pass one param?
becasue + is far away from ++ to let me know that 2 will be 3.
So, it's still a question......




--

PO SU
mail: desolator88 at 163.com 
Majored in Statistics from SJTU



At 2014-10-18 01:40:50, "David Winsemius" <dwinsemius at comcast.net> wrote:
>
>On Oct 17, 2014, at 1:06 AM, PO SU wrote:
>
>> 
>> Tks for your alternative way's details. but like you mentioned in graphics package, i still wonder how to overload an operator which can pass one param like +2 .
>> There seems exists some examples for my needing. But i try to find them but without any results.
>> can you show me some examples from it? 
>> 
>
>I think this might be a case of "if you don't know enough to do it, then you don't know why you shouldn't do it." (Or vice versa?) I did search for a relevant fortune to support my impression, but the various entries for fortune("parse") and fortune("eval") didn't seem to hit the mark.
>
>library(ggplot2)
>help(pack="ggplot2")  # scroll to bottom of page
>ggplot2:::`+.gg`   # this shows the S3 method of adding an operator based on the S3 method dispatch.
>
>I was able to emulate that example to create a C-like, unary `+` operator for a new class, but I'm not willing to put it in print for fear that my karmic account might be depleted.
>
>-- 
>David.
>
>> --
>> 
>> PO SU
>> mail: desolator88 at 163.com 
>> Majored in Statistics from SJTU
>> 
>> 
>> 
>> At 2014-10-17 15:16:47, "David Winsemius" <dwinsemius at comcast.net> wrote:
>>> 
>>> On Oct 16, 2014, at 10:36 PM, PO SU wrote:
>>> 
>>>> 
>>>> Tks for your advice,  let the ++ problem alone, how to write an  
>>>> Unary operator ? Is it permitted in R?
>>>> such    as    a<-2 , a%+2%  will let a  be 4 .
>>> 
>>> OK, that's just wrong. Oh, OK, just for fun, as it were:
>>> 
>>> inc <- function(x)
>>> {
>>> eval.parent(substitute(x <- x + 1))
>>> }
>>> 
>>> 
>>>> inc(10)
>>> Error in 10 <- 10 + 1 : invalid (do_set) left-hand side to assignment
>>>> y=10
>>>> inc(y)
>>>> y
>>> [1] 11
>>> 
>>> 
>>>> I just want to know it , i won't pollute r with it , because i know  
>>>> what is r .  : )
>>>> 
>>> It's certainly permitted. Just look at all the overloadings of the "+"  
>>> operator in graphics packages. Look up the documentation on methods in  
>>> R.
>>> 
>>> Why not just use a well-behaved function, though?
>>> 
>>> .inc <- function(x) x+1
>>>> .inc(10)
>>> [1] 11
>>> 
>>> Then you won't be tempted to try 10 <- .inc(10) because it just  
>>> wouldn't make sense.
>>> 
>>> -- 
>>> David.
>>> 
>>>> --
>>>> 
>>>> PO SU
>>>> mail: desolator88 at 163.com
>>>> Majored in Statistics from SJTU
>>>> 
>>>> 
>>>> 
>>>> 
>>>> At 2014-10-17 13:09:47, "Rolf Turner" <r.turner at auckland.ac.nz> wrote:
>>>>> On 17/10/14 17:29, PO SU wrote:
>>>>>> 
>>>>>> Dear expeRts,
>>>>>>  Now i want to know how to implement an Unary operator like  i++  
>>>>>> in cpp's  synax form.
>>>>>>  e.g.   2++  will let 2 be 3 ,  a<-2 ,a++ ,will let a be 3
>>>>>> I tried this :
>>>>>> '%++%'<-function(x){
>>>>>>   x<<-x+1
>>>>>> }
>>>>>> but it have problem, the biggest one is it seems the function need
>>>>>> twoparams like a%++%b , how to write a function needing just one  
>>>>>> param?
>>>>>> 
>>>>>> TKS !
>>>>> 
>>>>> Just ***DON'T***.  The "++" operator is useful only for those wish to
>>>>> write code which is obscure to the point of incomprehensibility.  It
>>>>> makes C and its offspring "write only" languages.
>>>>> 
>>>>> If you are going to use R, use R and don't pollute it with such
>>>>> abominations.
>>>>> 
>>>>> cheers,
>>>>> 
>>>>> Rolf Turner
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Rolf Turner
>>>>> Technical Editor ANZJS
>>>> ______________________________________________
>>>> 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.
>>> 
>>> David Winsemius, MD
>>> Alameda, CA, USA
>>> 
>
>David Winsemius
>Alameda, CA, USA
>


More information about the R-help mailing list