[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