r语言如何求矩阵中某一列的总和

Python013

r语言如何求矩阵中某一列的总和,第1张

矩阵为A

方法一:colSums(A)

方法二:apply(A,2,sum)

>x<-matrix(c(1,1,2,1,2,3,4,1),4,2)

>x

[,1] [,2]

[1,] 1 2

[2,] 1 3

[3,] 2 4

[4,] 1 1

>length(which((x[,1]==1)))

[1] 3

>length(which((x[,2]==1)))

[1] 1

#x[,1]==1判断是否为1,返回True或False

# which((x[,1]==1))返回为True的行号

#length(which((x[,1]==1)))返回为True的行数,即1的个数

简正模式

矩阵在物理学中的另一类泛应用是描述线性耦合调和系统。这类系统的运动方程可以用矩阵的形式来表示,即用一个质量矩阵乘以一个广义速度来给出运动项,用力矩阵乘以位移向量来刻画相互作用。求系统的解的最优方法是将矩阵的特征向量求出(通过对角化等方式),称为系统的简正模式。

以上内容参考:百度百科-矩阵

上图是一个简单的例子,b为一矩阵,现在想统计第二列中数值等于1的元素个数,首先做一个逻辑判断,即b[,2]==1,得到一个由布尔变量true和false组成的向量。

此时只需要知道true的数量,由于对布尔变量求和,true转化为1,false转化为0,故对该向量求和即可得到true的数量,即b[,2]中等于1的数量。

如果是统计整个矩阵,比如y

那么直接table(y)

>y

[,1] [,2] [,3]

[1,]123

[2,]222

[3,]321

>table(y)

y

1 2 3

2 5 2

所以如果统计所有列,那就自己写个循环吧

for(i in 1:ncol(y)){

table(y[,i])

}