R中的赋值运算符:与“=”相比,“< - ”是否始终有效?

时间:2015-02-26 17:35:36

标签: r

在R中,我遇到了一个示例,其中=<-对分配都有效。 e.g。

> y = c("hello", "world")
> y
[1] "hello" "world"
> y2 <- c("hello", "world")
> y2
[1] "hello" "world"

我还遇到了=无效且<-有效的示例。 e.g。

> quote(y[1] <- 1)
y[1] <- 1
> quote(x[1] = 1)
Error: unexpected '=' in "quote(x[1] ="

我的问题是,是否存在反之亦然的情况?即<-无效,=无效?

在R中执行赋值操作时,提出此问题的原因是要了解是否坚持=<-或其中任何一种(取决于具体情况)。

这将真正帮助我在R中执行编码时设置我的思维方式。

谢谢!

2 个答案:

答案 0 :(得分:2)

不要混淆自己。为变量赋值时使用<-,在设置函数参数时使用=。我相信,这是最简单的方法,可以轻松,正常地做你最想做的事情。

使用<-而非= 分配

我定义了一个功能

temp <- function(arg)
    2*arg

我们称之为:

temp(arg = 2)
[1] 4
temp(arg <- 2)
[1] 4

似乎它是一样的,但是它呢?

让我们打印arg:

arg ## first case
Error: object 'arg' not found
arg ## second case
[1] 2

很奇怪,不是吗?您很可能并不想将该值存储到该变量,但它确实发生了,因为您使用了<-

答案 1 :(得分:1)

R有几个赋值运算符。每the documentation

  

运算符<-可以在任何地方使用,而运算符=只允许在顶层(例如,在命令提示符下键入的完整表达式中)或作为子表达式之一支持表达式列表。

我知道你必须使用<-运算符的唯一地方是在附件中命名列表中的项目。

这不起作用:

> attach(what <- list(foo <- function(x) print(x)))

但这样做:

> attach(what <- list(foo = function(x) print(x)))

我实际上并不知道为什么会这样。如果有其他人知道我喜欢学习原因。

我也被迫不鼓励使用任何亵渎神明的权利分配算子。