r - 将矩阵转换为 R 中的累积行平均值矩阵

标签 r matrix average linear-algebra

我有一个预测矩阵。每一行都是对个人的预测,每一列都是来自特定模型的预测。我想对此进行转换,因此第一列是第一个模型的预测,第二列是第一个 第二个模型的预测的平均值,等等.

因此,转换后的矩阵将包含原始矩阵中观测值的运行累积平均值。

我觉得 cumsum 可以与 apply 函数一起使用来实现这一点,但我不确定如何获得优雅的结果(用于大型矩阵)。

谢谢!

最佳答案

试试这个:

# Initialize a testing matrix
(m <- matrix(1:12, 3, 4))

     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

# Calculate cumulative average by column for each row
t(apply(m, 1, cumsum) / seq(ncol(m)))

     [,1] [,2] [,3] [,4]
[1,]    1  2.5    4  5.5
[2,]    2  3.5    5  6.5
[3,]    3  4.5    6  7.5

这基本上是按行累计求和,然后除以指示列索引的循环数组。

编辑:如果您正在对数据框做类似的事情,这种使用 data.table 和 reshape2 包的方法可能会有用:

library(data.table)
dt <- data.table(m)
# Add row number to melt by
dt[, row := seq(nrow(dt))]

library(reshape2)
dt.molten <- data.table(melt(dt, "row"))
# Row-level format
dt.molten[, cumsum(value) / as.numeric(variable), "row"]

    row  V1                                                                                          
 1:   1 1.0                                                                                          
 2:   1 2.5                                                                                          
 3:   1 4.0                                                                                          
 4:   1 5.5                                                                                          
 5:   2 2.0                                                                                          
 6:   2 3.5                                                                                          
 7:   2 5.0                                                                                          
 8:   2 6.5                                                                                          
 9:   3 3.0                                                                                          
10:   3 4.5                                                                                          
11:   3 6.0
12:   3 7.5

关于r - 将矩阵转换为 R 中的累积行平均值矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314540/

相关文章:

c++ - 在 C++ 中为多维特征矩阵赋值?

php - 如何从php中的数组中找到平均值?

r - 更改 data.frame 中的元素列

r - 用指数估计填空

r - 你能在 RMarkdown 中左对齐或加粗 Kable 的表格/图形标题吗?

r - 如何在 R 中翻转数值数据?

Opengl加载矩阵

c++ - 在 C++ 中使用模板参数进行矩阵乘法

crystal-reports - 计算多个平均值的平均值

Excel - 当单元格包含某些文本但平均值不为零时列中的平均值