R语言中赋值符号等号=与箭头<-

March 18, 2013

Tags:菜鸟学R语言

刚开始学R,连菜鸟都算不上,姑且希望毕业前能算个菜鸟吧。

= 和 <- 或者 -> 有什么区别呢?

有fortran或c语言基础的同学应该都会有这个疑问,并且被<-这种反人类的赋值符号折腾的苦恼不已,你需要在键盘上完成四个动作才能打出这个符号:1.按住shift,2.按下>键,3.松开shift,4.按下-键,更何况我用的法语键盘,各种痛苦估计只有用德语键盘的童鞋能理解吧。而“=”,就只需要按一次。说起二者的区别,yihui大神在其博文中有很好的阐释,高屋建瓴。对于零基础初学者拜读一下大神的文章是不无裨益的,但我想把我理解的区别从文中提炼出来,毕竟大部分R的使用者,尤其像我这种半路和尚,只会用到冰山一角,从底层去理解R有些没有必要,不能完全体会到大神洋洋洒洒的行文中忽冷忽热的调侃。所以,各位半路和尚(尼姑)们:

x = 2  #给x赋值为2
x < -1 #判断x是否小于-1,返回逻辑值
x <- 1 #覆盖x先前的赋值,重新给x赋值为1
x        #显示x

运行结果是

[1] FALSE
[1] 1

所以我们可以总结一下,

x <- 1  #给x赋值为1
x<-1    #给x赋值为1
x<- 1   #给x赋值为1
x <-1   #给x赋值为1
x< -1   #判断x是否小于-1,并返回逻辑值
x < -1  #判断x是否小于-1,并返回逻辑值

你应该可以发现其中的区别,所以养成一个好习惯,在运算符号前后都要加上空格是避免语法错误的根本解决方法。一旦你养成了这个习惯,那么 “=”和“<-”就没有区别了。

大神yihui似乎是个等号党,关于“=”除了赋值之外,还具有传递函数的功能,因此造成歧义这一块我是看不懂的,这些都仅仅存在与神神的脑海里。总之,如果你之前学习的是R in nutshell,并已经习惯了在赋值功能上使用箭头<-的话,那么你就养成前后空格的好习惯就好,因为该书作者认为<-的赋值符号更直观更好理解;如果你从别的语言转过来,习惯用等号=的话,那就继续用吧。

· The end ·