f******9 发帖数: 267 | 1 请教一个关于R的问题,有一个matrix,对角线两侧是对称的,如何把它变成只含有对
角线一侧的matrix,并且再如何把它
变成vector,如下所示,谢谢啦!
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1.000 0.032 0.118 0.029 0.008 0.007
[2,] 0.032 1.000 0.057 0.166 0.002 0.232
[3,] 0.118 0.057 1.000 0.005 0.002 0.001
[4,] 0.029 0.166 0.005 1.000 0.042 0.188
[5,] 0.008 0.002 0.002 0.042 1.000 0.022
[6,] 0.007 0.232 0.001 0.188 0.022 1.000
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1.000
[2,] 0.032 1.000
[3,] 0.118 0.057 1 | Y******Y 发帖数: 8753 | 2 example:
m<- matrix(1:25, 5,5 ) 或者你原来那个矩阵
第一步
m[upper.tri(m)]<-NA
第二步
vec<-m[!is.na(m)] | f******9 发帖数: 267 | 3 太感谢了!
【在 Y******Y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : example: : m<- matrix(1:25, 5,5 ) 或者你原来那个矩阵 : 第一步 : m[upper.tri(m)]<-NA : 第二步 : vec<-m[!is.na(m)]
| Y******Y 发帖数: 8753 | 4 如果你最终目的只是想要一个vector,那么start from matrix m, 只需要写一步
vec<-m[lower.tri(m,diag=TRUE)]
【在 f******9 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 太感谢了!
| f******9 发帖数: 267 | 5 好的,谢谢啦!
【在 Y******Y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 如果你最终目的只是想要一个vector,那么start from matrix m, 只需要写一步 : vec<-m[lower.tri(m,diag=TRUE)]
|
|