要在 R 矩阵中找到同名列的行标准差,我们可以按照以下步骤操作 -
首先,创建一个矩阵,其中一些列具有相同的名称。
然后,使用 tapply 以及 colnames 和 sd 函数来查找具有相同名称的列的行标准差。
让我们创建一个矩阵,如下所示 -
M<-matrix(rpois(100,5),ncol=4) colnames(M)<-c("C1","C2","C1","C2") M输出结果
执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-
C1 C2 C1 C2 [1,] 2 6 3 1 [2,] 9 4 3 4 [3,] 4 4 1 2 [4,] 3 2 2 4 [5,] 5 7 2 4 [6,] 3 9 7 2 [7,] 3 3 5 3 [8,] 6 5 4 5 [9,] 6 7 7 7 [10,] 7 6 5 5 [11,] 2 7 3 7 [12,] 1 4 4 7 [13,] 6 7 7 7 [14,] 1 3 1 2 [15,] 9 8 4 5 [16,] 4 4 4 2 [17,] 5 7 1 4 [18,] 3 6 6 9 [19,] 5 7 3 7 [20,] 4 7 4 5 [21,] 3 6 3 5 [22,] 2 6 5 3 [23,] 6 3 5 6 [24,] 5 3 5 6 [25,] 3 6 5 9
查找具有相同名称的列的行标准差
使用 tapply 以及 colnames 和 sd 函数来查找矩阵 M 中具有相同名称的列的行标准差 -
M<-matrix(rpois(100,5),ncol=4) colnames(M)<-c("C1","C2","C1","C2") t(apply(M,1, function(x) tapply(x,colnames(M),sd)))输出结果
C1 C2 [1,] 0.7071068 3.5355339 [2,] 4.2426407 0.0000000 [3,] 2.1213203 1.4142136 [4,] 0.7071068 1.4142136 [5,] 2.1213203 2.1213203 [6,] 2.8284271 4.9497475 [7,] 1.4142136 0.0000000 [8,] 1.4142136 0.0000000 [9,] 0.7071068 0.0000000 [10,] 1.4142136 0.7071068 [11,] 0.7071068 0.0000000 [12,] 2.1213203 2.1213203 [13,] 0.7071068 0.0000000 [14,] 0.0000000 0.7071068 [15,] 3.5355339 2.1213203 [16,] 0.0000000 1.4142136 [17,] 2.8284271 2.1213203 [18,] 2.1213203 2.1213203 [19,] 1.4142136 0.0000000 [20,] 0.0000000 1.4142136 [21,] 0.0000000 0.7071068 [22,] 2.1213203 2.1213203 [23,] 0.7071068 2.1213203 [24,] 0.0000000 2.1213203 [25,] 1.4142136 2.1213203