假设我有3个列表:
a=list(1,2,3)
b=list(matrix(c(1,2,3,4), ncol=2),matrix(c(3,2,3,5), ncol=2),matrix(c(1,4,2,2), ncol=2))
c=list(c(1,2),c(4,7),c(3,4))
我希望根据三个列表中元素的操作创建一个向量,例如:
result=c(rep(NA,3))
for (j in 1:3) {
result[j]=(a[[j]]-t(c[[j]])%*%b[[j]]%*%c[[j]])/2
}
在不使用循环的情况下,这样做更有效的方法是什么?
答案 0 :(得分:2)
这样的东西?
mapply(function(x,y,z) (x-t(z)%*%y%*%z)/2, x = a, y = b, z = c)
[1] -13.0 -215.5 -55.0