gpt4 book ai didi

r - 如何替换从左下角到右上角的对角线下方矩阵中的值?

转载 作者:行者123 更新时间:2023-12-05 08:29:31 24 4
gpt4 key购买 nike

给定一个矩阵(未对其尺寸做出任何假设),它在从左下角到右上角的对角线下方包含零:

m <- matrix(data = c(2, 1, 8, 9, 1,
5, 0, 4, 3, 6,
7, 1, 2, 5, 0,
3, 1, 0, 0, 0,
2, 8, 0, 0, 0,
9, 0, 0, 0, 0),
nrow = 6,
ncol = 5,
byrow = TRUE)

问题是如何用 NA 替换对角线下方的所有这些零?结果应该如下:

       [,1] [,2] [,3] [,4] [,5]
[1,] 2 1 8 9 1
[2,] 5 0 4 3 6
[3,] 7 1 2 5 NA
[4,] 3 1 0 NA NA
[5,] 2 8 NA NA NA
[6,] 9 NA NA NA NA

矩阵可能在其他地方(在对角线上或上方)包含零。这些零不应被替换。

最佳答案

使用 base R 函数 rowcol:

m[row(m) + col(m) > nrow(m) + 1] <- NA

它给出了所需的输出:

> m
[,1] [,2] [,3] [,4] [,5]
[1,] 2 1 8 9 1
[2,] 5 2 4 3 6
[3,] 7 1 2 5 NA
[4,] 3 1 3 NA NA
[5,] 2 8 NA NA NA
[6,] 9 NA NA NA NA

诀窍是添加每个单元格的行号和列号。所有数字大于行数加 1 的单元格都对应于从左下角到右上角的对角线下方的单元格。

关于r - 如何替换从左下角到右上角的对角线下方矩阵中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69102296/

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