我想编辑与使用的R的body
和substitute
功能,我想从一个字符串构建功能的新生产线的功能,之后代入函数。
我想,我需要将字符串转换为一定的阶级,它可以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)
}
只需使用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
我们可以分析表达式
body(myFun)[[4]] <- rlang::parse_expr(express_string)
myFun
#function (x)
#{
# A1 <- 1
# A2 <- 10
# A2 <- x^2 + A1
# return(A1 + A2)
#}