Rで次の簡単な式を実装しようとしています:
- 式1:
間隔の制限が非常に大きい場合 (たとえば、上限の値 = 5 ではなく 10,000)、R で積演算子を実装する方法がわかりません。
- フォーミュラ 2
2 番目の式の入力例 (実際には、間隔 S の次元ははるかに大きい)
S = list(c(1,0,0), c(0,1,0), c(0,0,1))
X = c(1,2,3)
どんな助けでも大歓迎です!
最初の式については、対数スケールでこれを行う方が良いと述べられています.xの真の値が0に近い場合、log1p
関数が役立つ場合があります.
一般に、これらのタイプの問題では、lapply
またはsapply
を使用して、乗算または合計 (または何でも) する必要がある部分を計算し、次にsum
またはprod
を使用して合計、乗算することができます。値を折りたたみ/結合したい場合は、次のような適切な機能を持たない演算子を使用するsum
かprod
、関数を使用しReduce
ます。
S = list c((1,0,0), c(0,1,0), c(0,0,1))
X = c(1,2,3)
lapply( lapply(S, function(x) X %*% x %*% t(X) ) , sum)
[[1]]
[1] 6
[[2]]
[1] 12
[[3]]
[1] 18