gpt4 book ai didi

r - 融化R中的下半矩阵

转载 作者:行者123 更新时间:2023-12-02 02:30:47 24 4
gpt4 key购买 nike

如何融化下半三角形加对角矩阵?

11 NA NA  NA  NA
12 22 NA NA NA
13 23 33 NA NA
14 24 34 44 NA
15 25 35 45 55
A <- t(matrix (c(11, NA, NA, NA, NA, 12, 22, NA, NA, NA,
13, 23, 33, NA, NA, 14, 24, 34, 44, NA,15, 25,
35, 45, 55), ncol = 5))

> A
[,1] [,2] [,3] [,4] [,5]
[1,] 11 NA NA NA NA
[2,] 12 22 NA NA NA
[3,] 13 23 33 NA NA
[4,] 14 24 34 44 NA
[5,] 15 25 35 45 55

到 data.frame 中的行和列(保留以下顺序)

col  row   value 
1 1 11
1 2 12
1 3 13
1 4 14
1 5 15
2 2 22
2 3 23
2 4 24
2 5 25
3 3 33
3 4 34
3 5 35
4 4 44
4 5 45
5 5 55

最佳答案

如果您也希望索引作为列,这应该可行:

m <- matrix(1:25,5,5)
m[upper.tri(m)] <- NA
m

[,1] [,2] [,3] [,4] [,5]
[1,] 1 NA NA NA NA
[2,] 2 7 NA NA NA
[3,] 3 8 13 NA NA
[4,] 4 9 14 19 NA
[5,] 5 10 15 20 25

cbind(which(!is.na(m),arr.ind = TRUE),na.omit(as.vector(m)))
row col
[1,] 1 1 1
[2,] 2 1 2
[3,] 3 1 3
[4,] 4 1 4
[5,] 5 1 5
[6,] 2 2 7
[7,] 3 2 8
[8,] 4 2 9
[9,] 5 2 10
[10,] 3 3 13
[11,] 4 3 14
[12,] 5 3 15
[13,] 4 4 19
[14,] 5 4 20
[15,] 5 5 25

我想我会稍微解释一下。我使用了三个“技巧”:

  1. whicharr.ind 参数用于获取索引
  2. 非常有用的 na.omit 函数,可以避免一些额外的输入
  3. 事实上,R 以列主形式存储矩阵,因此 as.vector 以正确的顺序返回值。

关于r - 融化R中的下半矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com