【发布时间】:2018-06-18 07:40:52
【问题描述】:
考虑一个函数 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”系列的任何函数来解决这个问题,从而避免循环?
【问题讨论】:
-
sapply(1:nrow(A), function(i) f(A[i,], B[i,,]))它是循环隐藏。我想在这种情况下最好使用显式循环。 -
@jogo 非常感谢您的快速回复。完美运行。
-
看看
mapply。它旨在遍历...中的每个参数 -
我会说使用
mapply他必须转换他的数组,例如分别到向量和矩阵的列表。 AFAIK 基础 R 不提供优雅的“应用”变体来直接处理多个数组(没有索引变量,如第一条评论所示) -
@user3293236 在发布问题之前我查看了 mapply ,因为文档专门提到了“元素”,所以我得出了与 RolandASc 相同的结论。关于如何用 mapply 解决这个问题的任何建议?