"="和"< - "之间是否存在技术差异?

R_U*_*ser 11 r

可能重复:
R中的赋值运算符:'='和'< - '

我想知道赋值运算符"=""<-"R 之间是否存在技术差异.所以,如果我使用它会有什么不同:

例1:a = 1a <- 1

例2:a = c(1:20)a <- c(1:20)

谢谢你的帮助

斯文

Sac*_*amp 22

就在这里.这是帮助页面'='说的:

运算符< - 和=分配到评估它们的环境中.operator < - 可以在任何地方使用,而operator =只允许在顶层(例如,在命令提示符下键入的完整表达式中)或作为支撑表达式列表中的子表达式之一.

使用"可以使用"帮助文件意味着在此处分配对象.在函数调用中,您无法分配对象,=因为=在那里分配参数.

基本上,如果您使用,<-则指定一个可以在当前环境中使用的变量.例如,考虑:

matrix(1,nrow=2)
Run Code Online (Sandbox Code Playgroud)

这只是一个2行矩阵.现在考虑:

matrix(1,nrow<-2)
Run Code Online (Sandbox Code Playgroud)

这也给你一个两行矩阵,但是现在我们还有一个被称为nrow2 的对象!发生的事情是,在第二次使用中我们没有分配参数nrow2,我们分配了一个对象nrow2并将其发送到第二个参数matrix,这恰好是nrow.

编辑:

至于编辑过的问题.两者都是一样的.使用=<-可以引起关于哪一个最好的讨论.许多风格指南都提倡<-并且我同意这一点,但确实保留了<-作业的空间,或者它们很难解释.如果你不使用空格(你应该,除了在推特上),我更喜欢=,永远不要使用->!

但是,只要你的选择一致,那么你使用什么并不重要.=在一行和<-下一行使用会产生非常难看的代码.

  • 这个答案是错误的(不幸的是文档也是错误的)。正如其他地方所解释的,运算符之间的唯一区别是它们的优先级。但是,与这个答案所说的相反,`=`和`&lt;-`赋值都是在相同的环境中评估的,并且说`=`只能在顶层使用是绝对错误的。 (2认同)
  • 另外,在您的示例中,我猜 `matrix(1,nrow=2)` 需要有一个名为 `nrow` 的参数,并且将 `nrow=2` 放在哪个位置并不重要,因为它是一个关键字参数,而如果您改为写“nrow&lt;-2”,则将其放在哪个位置确实很重要,因为它不是突然成为位置参数而不是关键字参数?如果是这样,我想也很容易将表达式“nrow&lt;-2”误解为关键字参数而不是位置参数,因此也许应该在函数调用内避免该表达式? (2认同)