首页 > 解决方案 > R:如何使用 3 维数组的边距作为同一函数的单独参数?

问题描述

我有一个名为 TOM 的数组。该命令dim(TOM)返回2, 4000, 4000

当我运行时:

consensusTOM <- pmin(TOM[1, , ], TOM[2, , ])

它返回一个矩阵,其中包含两个输入参数之间的平行最小值,这正是我所需要的。

我想编写一个函数,无论我对该数组的第一个边距有什么值,都可以将pmin()每个元素视为pmin()函数的单独参数。

然后,如果我输入一个维度为3, 4000, 4000的数组,它将执行以下操作:

consensusTOM <- pmin(TOM[1, , ], TOM[2, , ], TOM[3, , ])

同样,如果我输入一个维度为4, 4000, 4000的数组,它将执行以下操作:

consensusTOM <- pmin(TOM[1, , ], TOM[2, , ], TOM[3, , ], TOM[4, , ])

等等等等。

有谁知道如何在 R 中做到这一点?

标签: rarraysfunction

解决方案


一种选择是通过循环第一个维度将其更改为 a list,然后pmin在其中使用do.call

do.call(pmin, lapply(seq(dim(TOM)[1]), function(i) TOM[i,,]))

推荐阅读