R 如何将表达式列表转换为表达式列表
假设有这样一个函数:R 如何将表达式列表转换为表达式列表,r,expression,eval,R,Expression,Eval,假设有这样一个函数: fun <- function(...) { dots <- eval(substitute(alist(...))) # ... } 但是,我想在这样的环境中计算一个表达式:listname,age,它是一个表达式,而不是包含用户定义参数的实际列表 如何进行转换?我不完全清楚您希望在哪里评估什么,但如果您将列表替换为列表: 然后: fun(name,age,age*2,e=e) [[1]] [1] "Fred" [[2]] [1] 99 [[3]
fun <- function(...) {
dots <- eval(substitute(alist(...)))
# ...
}
但是,我想在这样的环境中计算一个表达式:listname,age,它是一个表达式,而不是包含用户定义参数的实际列表
如何进行转换?我不完全清楚您希望在哪里评估什么,但如果您将列表替换为列表: 然后:
fun(name,age,age*2,e=e)
[[1]]
[1] "Fred"
[[2]]
[1] 99
[[3]]
[1] 198
在某些环境中,它似乎有资格作为表达式求值:listname,age,因为在顶层,求值listname,age就是这样的,对吧:
> name="Joe"
> age=123
> list(name,age)
[[1]]
[1] "Joe"
[[2]]
[1] 123
和往常一样,你到底想要什么有些不清楚,但我认为
fun <- function(...) {
dots <- eval(substitute(alist(...)))
as.call(c(list(quote(list)),dots))
}
实际上,表达式只是调用的集合,所以我假设调用对您有效,但是如果您确实需要表达式,可以使用as.expressionex。我不确定这是否足够清楚。要在何处计算此表达式?开玩笑?还有别的吗?它的环境来自哪里?你能再具体一点吗?
fun(name,age,age*2,e=e)
[[1]]
[1] "Fred"
[[2]]
[1] 99
[[3]]
[1] 198
> name="Joe"
> age=123
> list(name,age)
[[1]]
[1] "Joe"
[[2]]
[1] 123
fun <- function(...) {
dots <- eval(substitute(alist(...)))
as.call(c(list(quote(list)),dots))
}
ex <- fun(name, age, gender)
ex
# list(name, age)
class(ex)
# [1] "call"