Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-有选择地组合矩阵的列_R_Matrix - Fatal编程技术网

R-有选择地组合矩阵的列

R-有选择地组合矩阵的列,r,matrix,R,Matrix,是否有一种方法可以按照以下方式组合矩阵的列: 输入: m1 [,1] [,2] [,3] [,4] S 121.0000000 100.0000000 100.0000000 82.6446281 P 0.5224135 0.1790449 0.1737533 0.1247883 输出: m2 [,1] [,2] [,3] S 121.0000000 100.0000000

是否有一种方法可以按照以下方式组合矩阵的列:

输入:

m1
         [,1]        [,2]        [,3]       [,4]
S 121.0000000 100.0000000 100.0000000 82.6446281
P   0.5224135   0.1790449   0.1737533  0.1247883
输出:

m2
         [,1]        [,2]        [,3]
S 121.0000000 100.0000000  82.6446281 
P   0.5224135   0.3527982   0.1247883  
我需要根据第1行中相等的元素组合第2行的元素

在这种情况下,
m2[2,2]=m1[2,2]+m1[2,3]


感谢以R为基数的,使用
聚合
例如:

 t(aggregate(P~S,t(dat),sum))

        [,1]        [,2]        [,3]
S 82.6446281 100.0000000 121.0000000
P  0.1247883   0.3527982   0.5224135

注意这里使用的转置,通常按列分组比按行分组更容易

这将充分实施并证明@jbaums的建议:

> rbind(sort( m1[1, !duplicated (m1[1,])] ), tapply(m1[2, ], m1[1, ], sum))
     82.6446281         100         121
[1,] 82.6446281 100.0000000 121.0000000
[2,]  0.1247883   0.3527982   0.5224135

类似于
tapply(m1[2,],m1[1,],sum)
,对于您的简单示例,这将无法正常工作。你必须对你的
m1[1,!duplicated(m[1,])]
进行排序。没错。固定的。