- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 another question , sapply(substitute(...()), as.character)
在函数内部使用来获取传递给函数的名称。 as.character
部分听起来不错,但是 ...()
到底是做什么的呢?
它不是替换
之外的有效代码:
> test <- function(...) ...()
> test(T,F)
Error in test(T, F) : could not find function "..."
更多测试用例:
> test <- function(...) substitute(...())
> test(T,F)
[[1]]
T
[[2]]
F
> test <- function(...) substitute(...)
> test(T,F)
T
最佳答案
这里简要说明了 ...()
为何如此工作。稍后我将填写更多详细信息和引用资料,但这涉及到要点。
在对其任何组件执行替换之前,substitute()
首先解析 R 语句。
...()
解析为调用对象,而 ...
解析为名称对象。
...
是一个特殊对象,仅用于函数调用。因此,当在调用对象中找到 ...
时,实现替换的 C 代码会采取特殊措施来处理它。当 ...
作为符号出现时,不会采取类似的预防措施。 (相关代码在R_SRCDIR/src/main中的函数
。)do_substitute
、substitute
和substituteList
(特别是后两个)中/coerce.c
因此,...()
中的()
的作用是使语句被解析为调用(又名语言)对象,以便替换将返回点的完全扩展值。令人惊讶的是,即使 ...
位于 ()
的外部,它也会被替换,但是: (a) 调用在内部存储为类似列表的对象(b) 相关的 C 代码似乎对该列表的第一个元素和后续元素没有区别。
旁注:为了检查 substitute
的行为或各种对象的类,我发现设置一个小沙箱很有用,如下所示:
f <- function(...) browser()
f(a = 4, 77, B = "char")
## Then play around within the browser
class(quote(...)) ## quote() parses without substituting
class(quote(...()))
substitute({...})
substitute(...(..., X, ...))
substitute(2 <- (makes * list(no - sense))(...))
关于r - 对...()感到困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523548/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!