在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中执行编码时设置我的思维方式。
谢谢!
答案 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)))
我实际上并不知道为什么会这样。如果有其他人知道我喜欢学习原因。
我也被迫不鼓励使用任何亵渎神明的权利分配算子。