0

ユーザーからの入力に応じて、関数の本体を変更する必要があります。

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 のさまざまな組み合わせを試しました。

4

1 に答える 1