按两个或多个列表的元素应用函数

时间:2015-11-15 23:41:46

标签: r list apply

假设我有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
}

在不使用循环的情况下,这样做更有效的方法是什么?

1 个答案:

答案 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