当第二个函数参数沿着与第一个参数相同的维度发生变化时,如何使用apply-Family?

时间:2018-01-09 09:45:39

标签: r apply

考虑函数f(x,y),其中x是向量(1xn),数据是矩阵(nxm),返回数字标量。

现在,我有一个矩阵A和一个三维数组B,并希望在A和B的第一维上应用f。

具体来说,我希望f在x = A [1,] y = B [1 ,,]时进行评估,然后x = A [2,] y = B [2 ,,]等等,返回数字标量的向量。

有没有办法使用“apply”系列的任何功能来解决这个问题,从而避免循环?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

sapply(1:nrow(A), function(i) f(A[i,], B[i,,]))

这是循环隐藏,因为循环是在sapply()内完成的。我想在这种情况下最好使用显式循环:

result <- numeric(nrow(A))
for (i in 1:nrow(A)) result[i] <- f(A[i,], B[i,,]