【问题标题】:How to calculate the mean by index of N elements in an array in R如何通过R中数组中N个元素的索引计算平均值
【发布时间】:2019-08-15 01:04:22
【问题描述】:

我有一个包含 15 个元素的通用数组。该数组中的每个元素都是一个 159 x 159 矩阵。

现在,我想计算 15 个元素的每个索引的平均值,并将结果存储在一个新的 159 x 159 矩阵中,该矩阵的新索引来自原始 15 个元素的相同索引位置的平均值数组。

如果允许我这么说,这是一个嵌套数组。这也是我发现有趣的开源网站上的一个 EigenFace 问题。所以,长话短说,这个数组是 15 个人的集合,每个人有 11 张图像,用 11 种面部表情,如眨眼、快乐、悲伤等。所以它是一个 15 个元素的数组,每个元素也是一个由 11 行和数千列像素组成的数组,用于描绘该人的面部表情。

例如,新矩阵的新索引 [1,1] 是通过从原始数组中的 15 个元素/矩阵中获取 [1,1] 索引的平均值来获得的。

我想避免使用for 循环,并希望有一个我可以使用的内置函数。

任何提示将不胜感激!

【问题讨论】:

  • 请分享示例数据
  • for 循环可以正常工作
  • 如果它实际上存储为一个数组,(?is.array 返回 TRUE),您可以使用 applycolmeansrowMeans
  • @lmo 是一个数组。这是一个开源网站上的 EigenFace 问题,我觉得很有趣。所以,长话短说,这个数组是 15 个人的集合,每个人有 11 张图像,用 11 种面部表情,如眨眼、快乐、悲伤等。所以它是一个 15 个元素的数组,每个元素也是一个由 11 行和数千列像素组成的数组,用于描绘该人的面部表情。

标签: arrays r computation


【解决方案1】:

你可以使用Reduce():

data <- list(matrix(1:16, 4), matrix(1:16, 4))

result <- Reduce('+', data)

result <- result * 1/length(data)

【讨论】:

  • 我认为result &lt;- result * 1/length(data),而不是length(list),应该是正确的。谢谢。
  • @AdamRalphus 你是对的,我在那里犯了一个错误。我编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2017-06-11
  • 2016-08-23
  • 2012-05-08
相关资源
最近更新 更多