次の形式で lapply 関数を使用しています。
y=rnorm(10)
x1=c(1,1,1,2,2,2,3,3,3,4)
x2=c(5,5,6,6,7,7,8,8,9,9)
x3=c(7,7,8,8,9,9,10,10,11,11)
t1 <- outer(x1, unique(x1), '<=')
t2 <- outer(x2, unique(x2), '<=')
t3 <- outer(x3, unique(x3), '<=')
lapply(seq_along(unique(x1)), function(idx) t(y*t1[,idx]*t2) %*% t3)
私は R の初心者なので、上記の lapply 呼び出しを一般化して別の変数を追加するのに問題があります。つまり、lapply は 2 つの引数の関数を呼び出すことになります。これは私がやろうとしたことです:
x4=c(7,6,6,5,9,5,10,1,1,2)
t4 <- outer(x4, unique(x4), '<=')
lapply(list(idx1=seq_along(unique(x1)),idx4=seq_along(unique(x4))),
function(idx1,idx4) t(y*t1[,idx1]*t2) %*% t3*t4[,idx4])
ここでの考え方は次のとおりです。idx1 を修正してから、各 idx4 に対して lapply 関数を使用します。次に、次の idx1 についても同じです。私は入れ子になったラップリーのようなものになるはずです。
これまでのところ、これを行う正しい方法を思い付くことができません。誰かが何かヒントを提供してくれますか?
PS .: この質問は私が以前に尋ねた質問に関連していますが、ここでの問題は、以前の回答を 4 次元に一般化できないことです。今後、この一般化を行う方法についてのヒントを求めています。ありがとう