根据帮助文档,
is.recursive(x)
函数的说明为:“如果x有递归结构(类似于列表),则返回TRUE,否则返回FALSE”。我不明白当x是一个函数时为什么会返回TRUE。例如:is.recursive(mean)
# [1] TRUE
但似乎函数在任何有意义的意义上都不能是递归的,特别是因为它们甚至不能被子集化:
mean[[1]]
# Error in mean[[1]] : object of type 'closure' is not subsettable
这是 R 源代码的疏忽吗?还是函数应该被视为递归的有效理由?
mean
)的变量进行子集操作,并且您使用[
对其进行子集操作,就像在数据框或向量中所做的那样... 我进一步认为,您的意图不是要进行子集操作,而是要使用$
访问函数中的项目。这在正常的 R 中可能没有太多意义,但是它是可能的:请参见此处https://coolbutuseless.github.io/2019/02/12/object-of-type-closure-is-not-subsettable/。 - TarJae