小编use*_*797的帖子

使用替换在R表达式中进行变量替换

我想用来substitute()在表达式中做变量替换,而不用计算表达式.例如,我有:

expr1 <- expression(if(x){
    return(y)
} else {
    return(z)
})
Run Code Online (Sandbox Code Playgroud)

我想要做的是将以下结果分配给"expr1":

expression(if(cos(x)){
    return(y)
} else {
    return(z)
 })
Run Code Online (Sandbox Code Playgroud)

做这样的事情:

expr2 <- substitute(expr1, list(x=cos(x)))
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为替补不会评估它的第一个论点.所以我回到原始变量:

expr1
Run Code Online (Sandbox Code Playgroud)

现在这里说它要在分配给变量的表达式中进行替换,我必须执行substitute()两次,然后执行eval(),如下所示:

expr2 <- eval(substitute(substitute(e, list(x = cos(x))), list(e = expr1)))
Run Code Online (Sandbox Code Playgroud)

当我执行此语句时,我确实得到一个分配给"expr2"的表达式,但它不包含所需的替换:

expression(if (x) {
    return(y)
} else {
    return(z)
})
Run Code Online (Sandbox Code Playgroud)

我可以将什么语法应用于"expr1",以便获得我想要分配给"expr2"的结果,即:

expression(if (cos(x)) {
    return(y)
} else {
    return(z)
})
Run Code Online (Sandbox Code Playgroud)

expression r substitution

5
推荐指数
1
解决办法
1447
查看次数

标签 统计

expression ×1

r ×1

substitution ×1