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

Python014

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的个数

简正模式

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

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

逐个分析之,

若a是列表,

sum(a)就是a的元素总和(结果是单个元素)

cumsum(a)就是a的元素累进求和(结果是列表)

而元素与列表进行+或-的运算时,元素会被广播(broadcast)成一个相同长度的列表,使列表对位元素之间进行计算,得新列表

e.g.cumsum(1:5)得

1 3 6 10 15

e.g.

a=1:5

sum(a)+a-cumsum(a)

15 14 12 9 5

x<-runif(10,min=0,max=1)#生成10个0到1的均匀分布

x<-x/sum(x)#每个随机数除以这十个数的总和

这样得到的10个随机数的和就是1了。

这里为了方便最初采用了0到1的均匀分布,实际上你可以采用任意的分布,只要将得到的十个数先平移至均为正数,再除以总和,就得到10个和为1的随机数。

当然,这10个数具体是什么分布就不讨论了。