Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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_Expression_Eval - Fatal编程技术网

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"