R语言 查找矩阵中非零元素的指数

R语言 查找矩阵中非零元素的指数

在这篇文章中,我们将讨论如何在R编程语言中找到矩阵中非零元素的索引。

方法1:使用for循环

可以在行和列上进行for循环迭代,以访问矩阵中包含的单元值。每个元素都被检查是否为非零值,如果满足约束条件,则显示相应的单元格索引。所需的时间复杂度相当于O(n * m),其中n是行的数量,m是列的数量。

# declaring a matrix in R
mat <- matrix(c(-1, 2, 0, 6, 0, 4), nrow = 2)
print ("Original Matrix")
print (mat)
print ("Indices of non-zero elements")
  
# computing indexes of non 
# zero elements looping through 
# rows
for (i in 1:nrow(mat)){
  
    # looping through columns
    for(j in 1:ncol(mat)){
      
        # check if element is non 
          # zero
        if(mat[i,j]!=0){
          
            # display the row and column
              # index
            cat(i, j,"\n")             
        }
    }
}

输出

[1] "Original Matrix"
    [,1] [,2] [,3]
[1,]   -1    0    0
[2,]    2    6    4
[1] "Indices of non-zero elements"
1 1
2 1
2 2
2 3 

方法2:使用which()方法

which()方法用于返回满足给定约束条件的值的位置或索引。它将条件应用于指定的R对象、向量或数据框或矩阵的每个元素,然后返回满足条件的值的相应单元格位置。在此方法中,缺失的值或NA被视为FALSE。

语法: which( cond, arr.ind = FALSE)

参数:

cond – 可以是一个逻辑向量或一个数组。

arr.ind – 逻辑;指示是否应该返回数组的索引。

如果arr.ind参数设置为FALSE,则返回单元格值而不是索引。返回的索引以表格的形式显示,row和col是各列的标题。

# declaring a matrix in R
mat <- matrix(c(-1, 2, 0, 6, 0, 4), nrow = 2)
print ("Original Matrix")
print (mat)
print ("Indices of non-zero elements")
  
# computing indexes of non zero 
# elements
which(mat != 0, arr.ind = T)

输出

[1] "Original Matrix"
    [,1] [,2] [,3]
[1,]   -1    0    0
[2,]    2    6    4
[1] "Indices of non-zero elements"
    row col
[1,]   1   1
[2,]   2   1
[3,]   2   2
[4,]   2   3

该方法也适用于字符数组或矩阵的情况。在这种情况下,整个矩阵单元格的位置将作为输出返回。

# declaring a matrix in R
mat <- matrix(letters[1:8], nrow = 2)
print ("Original Matrix")
print (mat)
print ("Indices of non-zero elements")
  
# computing indexes of non zero 
# elements
which(mat != 0, arr.ind = T)

输出

[1] "Original Matrix"
    [,1] [,2] [,3] [,4]
[1,] "a"  "c"  "e"  "g"
[2,] "b"  "d"  "f"  "h"
[1] "Indices of non-zero elements"
    row col
[1,]   1   1
[2,]   2   1
[3,]   1   2
[4,]   2   2
[5,]   1   3
[6,]   2   3
[7,]   1   4
[8,]   2   4

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程