我需要根据用户给出的输入来更改函数的主体。
modelstring <- function() {
for (h in (l1i1[j]):(l1i2[j])) {
w[h] <- 1/l1n[h]
}
}
userinput <- "b.w[1]*X.w[i,1]^exp(b.w[2]*X.w[i,2])"
body(modelstring)[[2]][[4]][[2]][[3]] <- userinput
问题是更改后的函数包含引号。我该如何摆脱它们?
modelstring
function ()
{
for (h in (l1i1[j]):(l1i2[j])) {
w[h] <- "b.w[1]*X.w[i,1]^exp(b.w[2]*X.w[i,2])"
}
}
将用户输入评估为公式时,替换有效且不插入引号
userinput <- as.formula(w ~ b.w[1]*X.w[i,1]^exp(b.w[2]*X.w[i,2]))
但是,我需要使用<-或仅使用右侧。在这些情况下,会计算公式,这会产生错误。
我也试过noquote仍然给出引号:
userinput <- noquote("b.w[1]*X.w[i,1]^exp(b.w[2]*X.w[i,2])")
最后,我尝试了expr(!!userinput)、subs()和替代的不同组合。