[R-SIG-Mac] A shorthand for '<-'
Duncan Murdoch
murdoch at stats.uwo.ca
Wed Nov 21 21:48:12 CET 2007
On 11/21/2007 1:19 PM, Simon Urbanek wrote:
> On Nov 21, 2007, at 11:45 AM, John Chambers wrote:
>
>> Simon Urbanek wrote: James,
>>
>> On Nov 21, 2007, at 8:22 AM, James Milks wrote:
>>
>>> The '=' sign can be used in place of '<-'. That's the only
>>> shorthand I know for R.
>>>
>>
>> That's not a shorthand. `=` and `<-` are semantically different in R.
>> Well, not really :-)
>>
>> It's true that the "=" operator won't be displayed as "<-", which I
>> agree was the original point. But both assignment operators map
>> into the same internal C code, if you di g into the implementation.
>>
>
> I think we may be talking about different things here.
>
> > a=list(a=1,b=2)
> > ls()
> [1] "a"
>
> > a<-list(a<-1,b<-2)
> > ls()
> [1] "a" "b"
>
> So `<-` and `=` are *not* semantically equivalent (where `<-` and `=`
> represent symbols in the parse tree).
>
> And I suppose the misunderstanding comes from the interpretation of
> `=` and `<-`: I meant them as symbols (which is what I would expect
> since we're talking about writing R code) and you interpreted them as
> operators (which cold be expected given that I used backticks which
> was not wise ;)). You are right that `=` and `<-` are equivalent as
> operators:
>
> > `=`(a,list(`=`(a,1),`=`(b,2)))
> > ls()
> [1] "a" "b"
>
> I hope this makes things even more clear ;).
Of course, even using them as operators the parser doesn't think they
are identical:
> if (a <- 1) cat("yes\n")
yes
> if (a = 1) cat("yes\n")
Error: unexpected '=' in "if (a ="
> if (`=`(a,1)) cat("yes\n")
yes
Duncan Murdoch
More information about the R-SIG-Mac
mailing list