中的R编辑功能使用替代用的字符串作为参数

问题描述 投票:1回答:2

我想编辑与使用的R的bodysubstitute功能,我想从一个字符串构建功能的新生产线的功能,之后代入函数。

我想,我需要将字符串转换为一定的阶级,它可以substitute评估并送入功能。但是,我该怎么做呢?

下面是我想要的一个例子:

myFun <- function(x) {
    A1 <- 1
    A2 <- 10
    A1 <- x^2 + A2  # Line to be changed
    return(A1 + A2)
}

n <- 2
m <- 1
express_string <- paste0("A", n, " <- x^2 + A", m)

body(myFun)[[4]] <- substitute( express_string )  # This is the tricky part.

这就是我想要的功能,看起来像在最后:

myFun <- function(x) {
    A1 <- 1
    A2 <- 10
    A2 <- x^2 + A1  # New line
    return(A1 + A2)
}
r function edit substitution
2个回答
2
投票

只需使用parse

body(myFun)[[4]] <- parse(text = express_string)[[1]]

当然,这将是优选的不作为字符串创建R指令。 bquote可以帮助:

LHS <- as.name(paste0("A", n))
RHS <- as.name(paste0("A", m))

express <- bquote(.(LHS) <- x^2 + .(RHS))

body(myFun)[[4]] <- express 

2
投票

我们可以分析表达式

body(myFun)[[4]] <- rlang::parse_expr(express_string)    
myFun
#function (x) 
#{
#    A1 <- 1
#    A2 <- 10
#    A2 <- x^2 + A1
#    return(A1 + A2)
#}
© www.soinside.com 2019 - 2024. All rights reserved.