我正在函数的输出列表中分配值,例如:
nofun = function(sth){
something happening here
metrics = list(
metric1 = value1
metric2 <- value2 )
return(metrics)
}
查询metrics
后,我注意到<-
和=
的使用有所不同:前一个仅将值赋给没有名称的变量(即{{1} }),而第二个名称也应使用正确的名称(即"x1"= value1
)。
old more generic question底部的metric1 = value1
也引用了此行为,但是没有对此特定使用情况的解释。
这引起了我很多头痛和浪费时间,但我没有发现任何其他有用的信息。 预先感谢!
答案 0 :(得分:2)
要定义命名列表,您必须使用语法list(name1 = value1, name2 = value2, ...)
。以这种方式定义的列表元素具有包含其名称的属性name
。
写入name2 <- value2
将value2
分配给变量name2
。如果将此内容写在列表定义(list(name2 <- variable2)
)内,则变量将包含在列表中,但未定义名称属性。因此等效于:
name2 <- variable2
list(name2)
您可以比较两种说法:
attributes(list(a=3))
# $names
# [1] "a"
attributes(list(a<-3))
# NULL