0引言
对于R语言的初学者,往往会遇到<-
和=
这两个赋值符号,本文本主要用箭头和赋值来称呼这两个符号,但是这两个符号有啥区别呢。这篇文章尽力的去讲明白这个事情。为刚刚入门的小白提供一点指导。
1、历史来源
系统学过R语言的人应该会知道R语言都知道R语言的前身是S语言。在初始的编程软件被开发出来的时候等于号=
是用来代表判断。箭头(<-)用来代表赋值,而后来的S语言则是继承这个习惯设计的。但是随着编程软件习惯的完善我们使用双等于号==
来表示判断的逻辑,所以等于号也被闲置出来用于赋值的功能,所以后来在R语言中等于号和箭头都被用来用作赋值的功能。下面给出一下示例,方便初学者的理解:
> x = 1:6
> x
[1] 1 2 3 4 5 6
> y <- 1:6
> y
[1] 1 2 3 4 5 6
2、<- 和=的区别案例
2.1 = or <- :函数传参
=
多用于编写自定义函数时形式参数的数据传参,以及不需要赋值的调用函数。下面给出具体例子。
> rm(list=ls(all=TRUE)) # 清除空间变量
> fun1 <- function(a = 1, b = 2){
+ a + b
+ } # 构建函数1
> fun2 <- function(a <- 1, b <- 2){
错误: unexpected assignment in "fun2 <- function(a <-"
> a + b
错误: 找不到对象'a'
> } # 构建函数2
错误: 意外的'}' in "}"
> fun1() # 函数1的调用
[1] 3
> fun1(a = 5, b = 6) # 函数1的调用
[1] 11
> a
错误: 找不到对象'a'
> b
错误: 找不到对象'b'
> fun1(a <- 3, b <- 5) # 函数1的调用
[1] 8
> a
[1] 3
> b
[1] 5
3、总结与扩展
由上面的讨论我们可以知道<-
和=
的区别主要在于函数的编写与调用。在除函数编写外,其他时候赋值建议使用<-
而不是=
。当然赋值运算符除了=
和<-
外,还有用于全局赋值的运算符:<<-
。大家在使用的时候根据自己的需求谨慎使用。