との表現で一つの変数を評価= 7は平均してfの二つの変数
mean=7
f <- expression(-(x-mean)^2/2)
その後、新しい式を得る:
-(x-7)^2/2
私はそれをどのように行うことができますか?ありがとう。
との表現で一つの変数を評価= 7は平均してfの二つの変数
mean=7
f <- expression(-(x-mean)^2/2)
その後、新しい式を得る:
-(x-7)^2/2
私はそれをどのように行うことができますか?ありがとう。
約gsub
?サイドノートで
avg <- 7
f <- expression(-(x-avg)^2/2)
f.new <- as.expression(gsub('avg',avg,f))
expression("-(x - 7)^2/2")
、あなたは彼らがR
機能に組み込まれているので、mean
またはdata
ような名前の変数を定義することは避けてください。
これは片道です。
f <- as.call(f)
eval(substitute(substitute(expr, list(mean=7)), list(expr= f)))
# -(x - 7)^2/2()
その建設は心曲げ感じている場合は、あなただけでは感じる必要はありません:Rマニュアルを書いても、人はあなたがここに"a puzzle"提起しました問題を呼び出します。
+1代用品を2回使用してください。しかし、 'f <-quote( - (x-mean)^ 2/2))'はおそらく式を指定するより良い方法です... 'as.call'は'式(平均) 'で動作しません。 – Tommy
@ Tommy - そうですね、その提案をすることを考えましたが、ここでコメントしてうれしいです。私は、そこにあるものさえも噛み砕くトンがあると考えました。それは短くて哀れで、熟考の時間の後にはまだ報われているように私にはコーンのように感じます。私はまだ 'f'が式ではなくコールでなければならない理由をまだ知りませんので、私はまだ「そこに」あるとは思えません;) –
@Josh O'Brienあなたの返事をありがとう。 – moli
S-Plusでは、substitute
関数の引数はevaluate
で余分なものがありますので、簡単です。残念ながら、Rは...
# in S-Plus:
x <- expression(-(x-mean)^2/2)
substitute(x, list(mean=7), evaluate=TRUE)
#-(x - 7)^2/2
をその引数が不足している...あなたはJoshO'Brienが示唆@何のようなものに頼らなければなりません。これをRコアの機能要求として記録することを検討してください。
ありがとうございました。私の表現は非常に長く、多くの変数があります。あなたの方法を試してみます。 – moli
@ JoshO'Brienはもっと良いアプローチをしていると思います。しかし、 'gsub'を使うと、置き換える文字列が一意であり、他の文字列のサブ文字列でないことを確認してください。 – Tommy
@トミー(+1ジョシュ)私は同意する傾向があります。 – Justin