在R语言中,使用“=”和“<-”到底有什么不同? 就是等号和箭头号有什么区别,是完全一样还是局部不同?

Python033

在R语言中,使用“=”和“<-”到底有什么不同? 就是等号和箭头号有什么区别,是完全一样还是局部不同?,第1张

R里通常用符号”<-”代替其它语言里的”=”来作赋值符号。因为前者敲起来比等号要麻烦,且大部分情况下两者是等价的,所以通常就愉懒依旧用”=”来赋值。但要切记两者在某些时候是有区别的。字面上的解释,可以认为”<-”是赋值,”=”是传值。在函数调用中,func(x=1)与func(x<-1)是有区别的,前者调用完后变量x不会被保留,而后者会在工作区里保留变量x=1。再如length(x=seq(1,10))计算完成后x不会被保留,而length(x<-seq(1,10))计算完后你会在工作区里发现x这个变量。

outer:数组外积。如果a

和b

是两个数值数组,它们的外积将是这样的一个数组:维度向量通过连接两个操作数的维度向量(顺序非常的重要)得到;数据向量则由a

的数据向量元素和b

的数据向量元素的所有可能乘积得到。ab

<-

outer(a,

b,

"*")命令中的乘法操作符可以被任意一个双变量函数代替。例如,我们想研究函数f(x

y)

=

cos(y)=(1

+

x2)

在R

在向量x

和y形成的格子平面(regular

grid)上的特征,可以按下面的步骤进行:outer(1:2,1:3)实际上是省略了“*”号,实际上应该是outer(1:2,1:3,

"*")。符号其实就是指定怎么计算的。outer(1:2,1:3,"+")就是1+1:3;2+1:3.

r语言中等于号是用作赋值的功能。R语言最开始设计的时候,是采用箭头(<-)作为赋值符号的,这是从APL语言继承而来的(箭头表示赋值,等号表示判断)。之后的S语言也沿用了这个用法,再之后R语言为了保持和S语言的兼容性保留了这个箭头。直到2001年,R的更新版本中 才加入了等号(=)赋值。因此,对于一般的赋值语句,箭头(<-)与 等号(=)在 功能上是没有区别的,可以通用。但是等号(=)的作用有两个:它既可以赋值,也可以传递函数参数(实际上传参可以看作一种特殊形式的赋值,给参数赋值)。通常情况下,如果等号(=)出现在单独的环境中,它就是赋值;如果写在函数的参数位置,它就是传参。如果你在设置参数的时候使用了箭头(<-),那么你会发现在全局变量里,会多出一个和参数名相同的赋值的变量,容易导致歧义和错误,而且占用命名空间。