我有一个由 计算的主成分旋转向量的子列表prcomp
,其中每个列表项是Nx2
每个类的数组(即两个列向量)。
使用这些向量,我想将一些类似结构的数据投影到一个类列表中,每个类项都包含具有维度的数组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
)并删除将被矢量化的索引(这里[[]]
)。我错过了什么?