s16*_*210 5 r class typeof optional-parameters
我最近考虑...了一个函数的参数,并注意到 R 不允许检查对象的类。
f <- function(...) {
class(...)
}
f(1, 2, 3)
## Error in class(...) : 3 arguments passed to 'class' which requires 1
Run Code Online (Sandbox Code Playgroud)
现在报价
“要理解 R 中的计算,有两个口号很有帮助:
• 存在的一切都是对象。• 发生的一切都是函数调用。”
— 约翰·钱伯斯
在我的脑海里,我想知道:什么样的物体是...?
小智 4
多么有趣的问题啊!
\n\n点-点-点...是一个对象(约翰·钱伯斯是对的!),它是一种配对列表。嗯,我搜索了文档,所以我想与您分享:
R语言定义文档说:
\n\n\n\n\n\xe2\x80\x98...\xe2\x80\x99 对象类型存储为配对列表类型。\xe2\x80\x98...\xe2\x80\x99 的组件可以从 C 代码中以通常的对列表方式访问,但在解释代码中作为对象不容易访问。可以将对象捕获为列表。
\n
另一章详细定义了pairlists:
\n\n\n\n\nPairlist 对象类似于 Lisp\xe2\x80\x99s 点对列表。
\n\nR 语言中对列表的处理方式与通用向量 (\xe2\x80\x9clists\xe2\x80\x9d) 完全相同。
\n
关于通用和点对的帮助说:
\n\n\n\n\nR 内部几乎所有列表都是通用向量,而传统的点对列表(如 LISP 中)仍然可用,但很少被用户看到(除了作为函数的形式)。
\n
Stack Overflow上有一个很好的总结!
\n