によって計算された主成分回転ベクトルのサブリストがありますprcomp
。ここで、各リスト項目はNx2
各クラスの配列 (つまり、2 つの列ベクトル) です。
これらのベクトルを使用して、同様に構造化されたいくつかのデータをクラスのリストに射影したいと思います。各クラス項目には、次元NxMxT
の配列が含まれています。ここT
で、 は試行回数です。
私の問題は、単純なベクトル化された関数apply
とそのバリアントを記述できることですが、これを一般化して各リストに適用するのに苦労しています。
サンプルデータ:
somedata <- list(array(rnorm(100),dim=c(5,4,5)),array(rnorm(100),dim=c(5,4,5)))
somevectors <- list(array(rnorm(10),dim=c(5,2)),array(rnorm(10),dim=c(5,2)))
各リスト要素に対する操作の簡単な例を次に示します。
o.proj.1 <- apply(somedata[[1]],3,function(x){
t(somevectors[[1]]) %*% x
}) # returns an array where each projected trial is a column
への呼び出しの中にこれを当てはめようとしましたlapply()
が、あまり成功しませんでした:
lapply(somedata, y = somevectors, function(x,y){
apply(x,3,function(z){
t(y) %*% z
})
})
Error in t(y) %*% z : requires numeric/complex matrix/vector arguments
基本的に、私のアルゴリズムは、よりローカルな関数の周りに適切なapply
型 (ここlapply
) を配置し、ベクトル化されるインデックス (ここ[[]]
) を削除することです。私は何が欠けていますか?