【发布时间】:2013-11-09 00:54:11
【问题描述】:
我有一个由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)放在更局部的函数周围,并删除将被矢量化的索引(此处为[[]])。我错过了什么?
【问题讨论】: