请考虑以下事项:
foo <- function(x) {
cat(deparse(x))
cat("\n")
cat(x)
}
y <- 1:3
foo(y)
# 1:3
# 1 2 3
期望的输出:
foo(y)
# You passed variable "y" with 1:3
# 1 2 3
我如何cat()
一些输出告诉我传递给foo()
的值的名称?
作为理解某些微妙差异的后续行动,我如何创建可产生以下内容的foo2()
:
foo2 <- function(?) { ? }
foo2(unique(iris$Species))
# You passed "unique(iris$Species)"
# [1] setosa versicolor virginica
# Levels: setosa versicolor virginica
这个问题源于我对substitute
,match.call
,eval
,bquote
,parse
和deparse
的理解有限 - 所以感觉可以自由扩展任何答案,包括有关如何将所有这些组合在一起的其他说明。