[R] increase or decrease variable by 1

David Winsemius dwinsemius at comcast.net
Tue Dec 7 19:12:50 CET 2010


On Dec 7, 2010, at 12:42 PM, Gabor Grothendieck wrote:

> On Tue, Dec 7, 2010 at 12:25 PM, Bert Gunter  
> <gunter.berton at gene.com> wrote:
>> Ted:
>>
>> Inline below...
>>
>> On Tue, Dec 7, 2010 at 8:42 AM, Ted Harding  
>> <ted.harding at wlandres.net> wrote:
>>> Indeed!
>>>
>>>  x <- x + 1
>>>
>>> (and being generous with unnecessary spaces) uses 10 characters.
>>>
>>>  `+`(x)<-1
>>>
>>> (being mean with them) uses 9. The "mean" version of the first
>>> uses only 6: x<-x+1
>>>
>>> However, I suppose there is merit in the spiritual exercise
>>> of contemplating how `+`(x)<-1 gets worked out!
>>
>> AFAICS it doesn't.
>>> `+`(x)<-1
>> Error in +x <- 1 : could not find function "+<-"
>
> Sorry, my code was missing the first line:
>
>> `+<-` <- `+`
>>
>> x <- 3
>> `+`(x) <- 1
>> x
> [1] 4

One can also attempt further creative violence to the language that  
shows that is possible to construct unary operators like the C  
prefix-"+" that do not require shift-9 <operand> shift-0.

 > `+`
function (e1, e2)  .Primitive("+")
 > `+` <- `-`    # in a different universe perhaps
 >  4 + 2
[1] 2
 > `+` <- function (e1, e2)  .Primitive("+") # attempt to restore
 >  4 + 2    # test
function (e1, e2)  .Primitive("+")  ##  oops
 > `+` <-  .Primitive("+")
 >  4 + 2
[1] 6          # "works"
 > `!` <- function(x) x + 1   # hijacking a logical NOT definition
 > !3
[1] 4   # so this is a redefinition of one of the two unary operators
         # ( of which I am aware, I'm not an R-guru.)

 > `!` <- .Primitive("!") ## hoping to restore expected behavior
 > !3
[1] FALSE   # whew. That seemed dangerous but I appear to have survived.

-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list