Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将引号应用于函数中的每个参数_R - Fatal编程技术网

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"