是否有可能在A和B上应用外部两个矩阵,并且一个函数需要2个向量并返回一个标量?

时间:2013-04-18 13:25:27

标签: r

我希望我可以使用类似的东西:

 outer(A,B,myfun)

实现类似的目标:

a<-matrix(nrow=nrow(A),ncol=nrow(B))
for(i in 1:nrow(A))
    for (j in 1:nrow(B))
    {
        a[i,j]<-myfun(A[i,],B[j,])
    }

还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

由于myfun可能会影响答案的详细信息,因此无法给出一般答案。

ares <- expand.grid(1:nrow(A), 1:nrow(B))
ares$res <- myfun(A[ares[,1], ), B[res[,2] ) 
# but may need mapply("myfun", A[ares[,1], ), B[res[,2] ) on which Vectorize is based
# or do.call(my.fun, ....)
a <- matrix(ares$res, nrow(A), nrow(B) )