【发布时间】:2015-07-13 01:23:37
【问题描述】:
我想使用substitute() 在表达式内部进行变量替换,而不对表达式求值。例如,我有:
expr1 <- expression(if(x){
return(y)
} else {
return(z)
})
我想做的是将以下结果分配给“expr1”:
expression(if(cos(x)){
return(y)
} else {
return(z)
})
通过这样做:
expr2 <- substitute(expr1, list(x=cos(x)))
但这不起作用,因为替代不评估它的第一个参数。所以我只取回原来的变量:
expr1
现在here 表示要在分配给变量的表达式中进行替换,我必须执行两次substitute(),然后执行eval(),如下所示:
expr2 <- eval(substitute(substitute(e, list(x = cos(x))), list(e = expr1)))
当我执行这个语句时,我确实得到了一个分配给“expr2”的表达式,但它不包含所需的替换:
expression(if (x) {
return(y)
} else {
return(z)
})
我可以对“expr1”应用什么语法,以便得到我想要分配给“expr2”的结果,即:
expression(if (cos(x)) {
return(y)
} else {
return(z)
})
【问题讨论】:
标签: r expression substitution