prob
50個の要素のリストがあります。各要素は確率の601x3行列であり、その各行は完全なサンプル空間を表します(つまり、各行列の各行の合計は1になります)。たとえば、次の最初の要素の最初の5行は次のprob
とおりです。
> prob[[1]][1:5,]
[,1] [,2] [,3]
[1,] 0.6027004 0.3655563 0.03174335
[2,] 0.6013667 0.3665756 0.03205767
[3,] 0.6000306 0.3675946 0.03237481
[4,] 0.5986921 0.3686131 0.03269480
[5,] 0.5973513 0.3696311 0.03301765
ここで、私がやりたいのは、リスト内の各行列/要素の各行に対してprob
次の行列を作成することです。最初の行を取得して、a = .603、b = .366、およびc = .032(小数点以下第3位に四捨五入)とします。それで、
> w
[,1] [,2] [,3]
[1,] a*(1-a) -a*b -a*c
[2,] -b*a b*(1-b) -b*c
[3,] -c*a -c*b c*(1-c)
そのような:
> w
[,1] [,2] [,3]
[1,] 0.239391 -0.220698 -0.019296
[2,] -0.220698 0.232044 -0.011712
[3,] -0.019296 -0.011712 0.030976
同様の3x3行列を600回(この行列の残りの行に対して)取得してから、このプロセス全体をの残りの要素に対して49回繰り返したいと思いますprob
。私が考えることができる唯一のことは、各マトリックスの各行に一度に1つずつアクセスするようにapply
内部を呼び出すことです。lapply
これを行うためのエレガントな方法ではないと確信していますが(言うまでもなく、それを機能させることはできません)、他に何も考えられません。誰かがこれで私を助けることができますか?また、別の構造を使用するための提案を聞きたいです(たとえば、リスト内で行列を使用するのは悪いですか?)。