我有一个矩阵mydata。我把它当成了
ev <- eigen(mydata)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.44852453+0i 0.11670674-0.43102606i 0.11670674+0.43102606i 0.02678808-0.00239041i 0.02678808+0.00239041i 0.013711630+0i
[2,] -0.40701659+0i 0.17265390+0.01329737i 0.17265390-0.01329737i 0.32050237+0.31677316i 0.32050237-0.31677316i -0.946287625+0i
[3,] -0.65381971+0i 0.35662142+0.31807798i 0.35662142-0.31807798i -0.83423480+0.00000000i -0.83423480+0.00000000i -0.265152784+0i
[4,] -0.37545331+0i -0.72987261+0.00000000i -0.72987261+0.00000000i -0.00637960-0.10181135i -0.00637960+0.10181135i 0.004667737+0i
[5,] -0.05763717+0i 0.02473111+0.01282302i 0.02473111-0.01282302i -0.00818839+0.03180396i -0.00818839-0.03180396i 0.122647730+0i
[6,] -0.24778175+0i
如果结果没有排序,我得到对应于最大特征值的最大特征向量:
k <- which(abs(ev$values)==max(abs(ev$values)))
G<-ev$vectors[,k]
[1] -0.44852453+0i -0.40701659+0i -0.65381971+0i -0.37545331+0i -0.05763717+0i -0.24778175+0i
调用此最大特征向量
G = [g 1 , G 2 ...G ñ ] Ť
因此,在这种情况下,G = [-0.44852453 + 0i -0.40701659 + 0i -0.65381971 + 0i -0.37545331 + 0i -0.05763717 + 0i -0.24778175 + 0i,其中n = 6
我的问题是,我想从这个特征向量构建一个比率矩阵,这样 B = {bij = gi / gj}。 R中是否有一个函数可以做到这一点?如果不是什么是最简单的方法来获得矩阵没有循环? {抱歉,我不知道如何在这个界面中显示数学符号。那应该是,矩阵B =条目b(sub ij)= g(sub i)/ g(sub j),g是G的成员}
答案 0 :(得分:2)
我认为这与特征值无关,您只想从向量创建矩阵B
,其中B[i,j]
= G[i]/G[j]
用于向量G
。
这可以通过outer
函数实现,该函数生成外部产品但允许您指定函数。
G <- 1:4
outer(G, G, FUN='/')
## [,1] [,2] [,3] [,4]
## [1,] 1 0.5 0.3333333 0.25
## [2,] 2 1.0 0.6666667 0.50
## [3,] 3 1.5 1.0000000 0.75
## [4,] 4 2.0 1.3333333 1.00