背景:什么是formals(function(x) {})
?
好吧,首先(并且如 中所述?formals
),formals(function(x) {})
返回一个pairlist:
is(formals(function(x){}))
# [1] "pairlist"
与列表对象不同,pairlist对象可以具有不包含值的命名元素——在构造一个可能具有可选形式参数的函数时,这是一件非常好的事情。来自?pairlist
:
允许没有值的标记参数,而“列表”只是忽略它们。
要查看差异,请使用 comparealist()
来创建对列表,并使用list()
它构造“普通旧”列表:
list(x=, y=2)
# Error in list(x = , y = 2) : argument 1 is empty
alist(x=, y=2)
# $x
#
# $y
# [1] 2
你的问题:什么是formals(function(x) {})$x
?
现在回答你关于什么formals(function(x) {})$x
是的问题。我的理解在某种意义上它的真正价值是“空符号”。但是,您无法从 R 中得到它,因为“空符号”是 R 的开发人员(非常有意地)试图完全对 R 用户隐藏的对象。(有关空符号的有趣讨论,以及为什么它被隐藏,请参阅从这里开始的线程)。
当一个人试图通过索引一个pairlist的一个空值元素来获得它时,R的开发人员通过让R返回元素的名称而不是它的verbotten-for-public-viewing值来阻止这种尝试。(当然,这是您问题中显示的名称对象)。