从 R 中的一组矩阵中有效地找到最小单元格值

茶炊

我有一个矩阵列表(大小 n*n),我需要根据我的列表创建一个新矩阵,给出每个单元格观察到的最小值。

例如,使用以下矩阵列表:

> a = list(matrix(rexp(9), 3), matrix(rexp(9), 3), matrix(rexp(9), 3))
> a
[[1]]
          [,1]       [,2]       [,3]
[1,] 0.5220069 0.39643016 0.04255687
[2,] 0.4464044 0.66029350 0.34116609
[3,] 2.2495949 0.01705576 0.08861866

[[2]]
          [,1]     [,2]      [,3]
[1,] 0.3823704 0.271399 0.7388449
[2,] 0.1227819 1.160775 1.2131681
[3,] 0.1914548 1.004209 0.7628437

[[3]]
          [,1]       [,2]      [,3]
[1,] 0.2125612 0.45379057 1.5987420
[2,] 0.3242311 0.02736743 0.4372894
[3,] 0.6634098 1.15401347 0.9008529

输出应该是:

          [,1]       [,2]      [,3]
[1,] 0.2125612 0.271399 0.04255687
[2,] 0.1227819 0.02736743 0.34116609
[3,] 0.1914548 0.01705576 0.08861866

我尝试使用带有以下代码的应用循环(使用 reshape2 库中的melt和dcast):

library(reshape2)
all = melt(a)
allComps = unique(all[,c(1:2)])
allComps$min=apply(allComps, 1, function(x){
  g1 = x[1]
  g2 = x[2]
  b = unlist(lapply(a, function(y){
    return(y[g1,g2])
  }))
  return(b[which(b==min(b))])
})
dcast(allComps, Var1~Var2) 

它有效,但在大型矩阵 (6000*6000) 上应用时需要很长时间才能运行。我正在寻找一种更快的方法来做到这一点。

罗纳克·沙阿

使用Reducepmin

Reduce(pmin, a)

#           [,1]       [,2]      [,3]
#[1,] 0.02915345 0.03157736 0.3142273
#[2,] 0.57661027 0.05621098 0.1452668
#[3,] 0.48021473 0.18828404 0.4787604

数据

set.seed(123)
a = list(matrix(rexp(9), 3), matrix(rexp(9), 3), matrix(rexp(9), 3))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在R中有效地提取逻辑矩阵中每行的第一个TRUE

如何在R中有效地找到超过阈值的最长值序列

在R中有效地从网格内插值

有效地比较R中的矩阵

如何使用R中的列表条目有效地设置矩阵的值?

有效地找到R中数据帧中不同行的列值计数

在R中有效地重命名连续列组

在R中有效地找到人口数据的中位数

如何有效地找到R data.table中具有非零值的最后一个前一行

如何有效地计算R中稀疏矩阵的每一行的平方和?

如何在R中有效地对字符串中的字母重新排序?

如何从宽格式的数据中有效地在 R 中绘制大量图形?

用R中列表中的行有效地填充二维矩阵

R:有效地找到我的值适合的正确范围

有效地重塑R中的非标准伪编码矩阵或表

在单个R数据中按组有效地查找表

如何有效地找到R中数据帧的插入索引?

有效地找到R中的起始和终止向量之间的序列

如何仅使用一个 Excell 单元格有效地找到与表格相比的值的最小正差异?

有效地获取在R中具有值的列名

有效地在R中创建向量的排列

有效地使用R中的集合

在 r 中更有效地重塑?

spark有效地找到一组列的最常用值

使用R有效地计算一列中单词列表的出现

计算一行中某些单元格中有多少个值不是NA(以R为单位)

如何在R中有效地附加列表的所有元素

如何在R中有效地联接具有多个主键的表?

R:在大数据行中有效地grep字符