ユーザーからの入力に応じて、関数の本体を変更する必要があります。
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 ()、およびreplacement のさまざまな組み合わせを試しました。