gpt4 book ai didi

r - 如何从矩阵中删除对角元素正方形?

转载 作者:行者123 更新时间:2023-12-04 23:18:38 25 4
gpt4 key购买 nike

我们可以使用 diag() 删除矩阵的对角元素,但是如果我们想删除元素的对角平方怎么办?就像在 6x6 矩阵中一样,我想删除对角线上的 2x2 正方形。它看起来非常基本,但如何在 r 中做到这一点?

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 23 98 12 98 32 99
[2,] 54 11 13 02 31 78
[3,] 25 85 15 09 46 87
[4,] 98 98 16 17 45 48
[5,] 88 00 68 99 89 89
[6,] 05 33 66 12 14 78

我想将对角线正方形设置为 NA
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] NA NA 12 98 32 99
[2,] NA NA 13 02 31 78
[3,] 25 85 NA NA 46 87
[4,] 98 98 NA NA 45 48
[5,] 88 00 68 99 NA NA
[6,] 05 33 66 12 NA NA

删除所有 NA,然后我们合并列
     [,1] [,2] [,3] [,4]
[1,] 12 98 32 99
[2,] 13 02 31 78
[3,] 25 85 46 87
[4,] 98 98 45 48
[5,] 88 00 68 99
[6,] 05 33 66 12

最佳答案

我希望有一种更优雅的方法来做到这一点,但这是一种方法:

# Create a matrix
mat = matrix(1:36, nrow=6)

# Set block diagonal elements to NA
for (i in seq(1, nrow(mat), 2)) {
mat[i:(i+1),i:(i+1)] = NA
}

# Reform the matrix with the NA values excluded
matrix(mat[!is.na(mat)], nrow=nrow(mat)-2)

关于r - 如何从矩阵中删除对角元素正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33448230/

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