R 如何将引号应用于函数中的每个参数
以下是我想做的:R 如何将引号应用于函数中的每个参数,r,R,以下是我想做的: as.character(quote(x)) [1] "x" 现在我想把它放在一个函数中 qq <- function(a) as.character(substitute(a)) qq(x) [1] "x" foo2 <- function(x, ...) { a <- as.list(match.call(expand.dots = FALSE))$... sapply(a, deparse) } foo2(5, x, y, z) #
as.character(quote(x))
[1] "x"
现在我想把它放在一个函数中
qq <- function(a) as.character(substitute(a))
qq(x)
[1] "x"
foo2 <- function(x, ...) {
a <- as.list(match.call(expand.dots = FALSE))$...
sapply(a, deparse)
}
foo2(5, x, y, z)
# [1] "x" "y" "z"
qq您可以尝试match.call
foo <- function(...) {
sapply(as.list(match.call())[-1], deparse)
}
foo(x, y, z)
# [1] "x" "y" "z"
foo(a, b, c, d, e)
# [1] "a" "b" "c" "d" "e"
foo试试这个:
qq <- function(...) sapply(substitute({ ... })[-1], deparse)
qq(a, b, c)
## [1] "a" "b" "c"
qq(+1)用于匹配。尽管打电话给不确定它做了什么。它只是从…
检索值吗?deparse
和as.character(替换(x))
之间有什么区别?也许这只是一个一般性的请求,要求某人解释deparse
,substitute
,quote
,eval
,as.expression
等……我不打算解释所有这些,但deparse
通常用于将未计算的表达式转换为字符串,这就是你在这里做的。我也努力去理解它们之间的区别。我的大多数问题都是通过尝试来回答的。你能解释一下为什么substitute({…})
在没有卷发的情况下,它只返回第一个参数吗?
foo <- function(...) {
sapply(as.list(match.call())[-1], deparse)
}
foo(x, y, z)
# [1] "x" "y" "z"
foo(a, b, c, d, e)
# [1] "a" "b" "c" "d" "e"
foo2 <- function(x, ...) {
a <- as.list(match.call(expand.dots = FALSE))$...
sapply(a, deparse)
}
foo2(5, x, y, z)
# [1] "x" "y" "z"
qq <- function(...) sapply(substitute({ ... })[-1], deparse)
qq(a, b, c)
## [1] "a" "b" "c"