R:使用Mapply避免循环

R:使用Mapply避免循环,r,R,我使用for循环执行以下代码来生成一个3D数组“newarr” n1这将为您提供所需的结果: newarr <- array(mapply(afun, n1,n2,n3, MoreArgs = list(y=Amat)), c(4,5,5)) 在这里,您将从mapply()获得矩阵列表。您必须取消列表。这将为您提供所需的结果: newarr <- array(mapply(afun, n1,n2,n3, MoreArgs = list(y=Amat)), c(4,5,5)) 在这

我使用for循环执行以下代码来生成一个3D数组“newarr”


n1这将为您提供所需的结果:

newarr <- array(mapply(afun, n1,n2,n3, MoreArgs = list(y=Amat)), c(4,5,5))

在这里,您将从mapply()获得矩阵列表。您必须取消列表。

这将为您提供所需的结果:

newarr <- array(mapply(afun, n1,n2,n3, MoreArgs = list(y=Amat)), c(4,5,5))

在这里,您将从mapply()获得矩阵列表。您必须取消列表。

非常感谢!!但我有一个条件要补充。。。当矩阵中的值为1时,“afun”应起作用。让我们考虑下面的矩阵,用1和0。你能在这方面也帮我一下吗。。QmatThanks很多!!但我有一个条件要补充。。。当矩阵中的值为1时,“afun”应起作用。让我们考虑下面的矩阵,用1和0。你能在这方面也帮我一下吗。。Qmat与
Qmat
分开的逻辑是什么?你的问题不清楚,我会提供一些准确的信息。Amat是一个如下所示的矩阵:让我们看看我是否得到了要点:对于Qmat中的每一个1,你得到的是3D数组
newarr
(它总是相同的3D数组吗?),对于Qmat中的每一个0,你想要得到0(或者是一个与
newarr
具有值0的相同形式的三维数组?)。结果应该是什么样子,一个5维数组?请在您的问题中说明逻辑,即编辑您的问题:对于Qmat中的每一个0,我不想执行任何操作,并为矩阵的所有单元格返回零。对于Qmat中的所有1,我想生成newarr。由于Amat的大小为4x5,n1、n2和n3是大小为5的向量,因此结果应该是一个具有(4 x5)x 5倍的3D数组。与
Qmat
分开的逻辑是什么?你的问题不清楚,我会提供一些准确的信息。Amat是一个如下所示的矩阵:让我们看看我是否得到了要点:对于Qmat中的每一个1,你得到的是3D数组
newarr
(它总是相同的3D数组吗?),对于Qmat中的每一个0,你想要得到0(或者是一个与
newarr
具有值0的相同形式的三维数组?)。结果应该是什么样子,一个5维数组?请在您的问题中说明逻辑,即编辑您的问题:对于Qmat中的每一个0,我不想执行任何操作,并为矩阵的所有单元格返回零。对于Qmat中的所有1,我想生成newarr。由于Amat的大小为4x5,n1、n2和n3是大小为5的向量,因此结果应该是一个具有(4 x5)x 5倍的3D阵列。
array(unlist(mapply(afun, n1,n2,n3, MoreArgs = list(y=Amat), SIMPLIFY = FALSE)), c(4,5,5))