[R] how to overwrite a Unary operator ?

David Winsemius dwinsemius at comcast.net
Fri Oct 17 09:16:47 CEST 2014


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



More information about the R-help mailing list