设矩阵为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个数具体是什么分布就不讨论了。