使用R减去相应rowMedian的行中的每个值

时间:2015-10-15 09:34:20

标签: r loops for-loop apply

我有一个366 * 1055维度的矩阵。我想连续减去每个值(每行包含1055个元素)及其各自的rowMedian值。如何去做?

2 个答案:

答案 0 :(得分:2)

使用基础包。矩阵m1来自akrun的答案。

<强>解释

我们可以使用apply函数将函数median应用于矩阵m1中的每一行。我们将第二个参数设置为1表示该函数将应用于行(逐行)。应用函数在R中非常有用。有关更多详细信息,请在控制台中键入?apply,或者通过Joran进行彻底的answer检查。

m1 - apply(m1, 1, median)

输出

      [,1] [,2] [,3] [,4] [,5]
 [1,]   -1    3   -3    0    1
 [2,]   -1    0    2   -1    0
 [3,]    1    0    1   -3   -4
 [4,]    3    4   -1   -1    0
 [5,]    3    0   -1    6   -3
 [6,]    3    3    0   -4   -6
 [7,]    0   -1   -2    5    1
 [8,]    2   -5    0    1   -2
 [9,]    2   -1    0    0   -4
[10,]    0   -1   -2    7    1

答案 1 :(得分:1)

我们可以使用rowMedians中的matrixStats来计算行median并从矩阵&m 39&#39;中减去它。

library(matrixStats)
m1 - rowMedians(m1, na.rm=TRUE) 

数据

set.seed(24)
m1 <- matrix(sample(0:9, 10*5, replace=TRUE), ncol=5)