为什么R中的赋值符号“ =”和“ <-”之间有不同的行为?

时间:2019-06-22 19:49:06

标签: r

我正在函数的输出列表中分配值,例如:

nofun = function(sth){

something happening here

metrics = list(
metric1 = value1
metric2 <- value2 )

return(metrics)
}

查询metrics后,我注意到<-=的使用有所不同:前一个仅将值赋给没有名称的变量(即{{1} }),而第二个名称也应使用正确的名称(即"x1"= value1)。

old more generic question底部的metric1 = value1也引用了此行为,但是没有对此特定使用情况的解释。

这引起了我很多头痛和浪费时间,但我没有发现任何其他有用的信息。 预先感谢!

1 个答案:

答案 0 :(得分:2)

要定义命名列表,您必须使用语法list(name1 = value1, name2 = value2, ...)。以这种方式定义的列表元素具有包含其名称的属性name

写入name2 <- value2value2分配给变量name2。如果将此内容写在列表定义(list(name2 <- variable2))内,则变量将包含在列表中,但未定义名称属性。因此等效于:

name2 <- variable2
list(name2)

您可以比较两种说法:

attributes(list(a=3))
# $names
# [1] "a"
attributes(list(a<-3))
# NULL