【问题标题】:finding max value from multidimensional array in R从R中的多维数组中找到最大值
【发布时间】:2016-05-20 18:42:19
【问题描述】:

我有一组暗淡的 4x1x4x71x128。 第一个暗淡指的是 4 种不同的型号。 第三个暗度指的是下置信区间、相关性、上置信区间和 p 值。

我需要作为输出的是一个新的昏暗数组 1x1x1x71x128,其中第一个昏暗指的是 4 个模型(第一个昏暗)中相关性的最大值(第三个昏暗)。

我尝试了以下方法:

newarray <- array(NA, c(1,1,1,71,128))
for (i in 1:4) {
  for (j in 1:nrow(array[1,1,1,,])) {
    for (k in 1:ncol(array[1,1,1,,])){
      newarray[i,1,1,j,k] <- max(array[i,1,1,j,k], na.rm = FALSE)
    }
  }
}

这返回的不是相关性而是较低 CI 的最大值。但是,当我将操作更改为:

newarray[i,1,1,j,k] <- max(array[i,1,2,j,k], na.rm = FALSE)

它不起作用。我相信我没有正确循环,但似乎无法弄清楚。

提前感谢您的帮助!

【问题讨论】:

  • 你试过apply(array,c(2,4,5),max)吗?
  • 这将有助于获得具有预期结果的可重复示例 - stackoverflow.com/questions/5963269/…
  • @nicola 不幸的是,建议的代码给了我 NA 值
  • @Bulat 我试图重现一个具有预期结果的示例:testarray &lt;- array(sample(1:16), c(2,1,2,2,2))resultarray &lt;- array(c(12,14,13,7), c(1,1,1,2,2))testarray[,1,2,,] # to compare resultsresultarray[1,1,1,,] # max value for each grid point

标签: r for-loop multidimensional-array


【解决方案1】:
x.max <- apply(x , c(3,4,5) , 
                   function(x) 
                     ifelse(all(is.na(x)), NA, max(x, na.rm = TRUE))) 

解决了! 结果是昏暗的 4x71x128,第一个昏暗的第二个元素是所需的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2013-06-24
    相关资源
    最近更新 更多