次の例を見てください。
boltzmann <- function(x, t=0.1) { exp(x/t) / sum(exp(x/t)) }
z=rnorm(10,mean=1,sd=0.5)
exp(z[1]/t)/sum(exp(z/t))
[1] 0.0006599707
boltzmann(z)[1]
[1] 0.0006599707
関数ではexp
、boltzmann
要素とベクトルを操作し、正しいことをいつ実行するかを知っているようです。sum
入力ベクトルを「展開」し、値に式を適用していますか?誰かがこれがRでどのように機能するかを説明できますか?
編集:R n00bに関するコメント、説明、および忍耐のすべてに感謝します。要約すると、これが機能する理由は、他の言語から来た私にはすぐにはわかりませんでした。Pythonを例にとってみましょう。最初に合計を計算してから、ベクトル内の各要素の値を計算します。
denom = sum([exp(v / t) for v in x])
vals = [exp(v / t) / denom for v in x]
Rはsum(exp(x/t))
インラインで計算できますが、