获取非零汇总的矩阵行索引以及这些行中的每一行的列索引

时间:2018-09-07 23:44:43

标签: r loops for-loop matrix

我有一个矩阵a看起来像这样:

      [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    0    0    3    0    6
[3,]    0    5    0    0    0
[4,]    6    0    0    0    0
[5,]    0    0    0    0    0

我有这段代码,用于在矩阵项不为零的情况下进行操作。

for(i in 1:5){
    for(j in 1:5){
        if(sum(a[i,]) == 0 && i <= 5) {
            i+1
        } else {
            if(a[i,j] == 0 && j <= 5){
                j+1
            } else {
            justi = i+i
            bothij = i+j
            print(justi)
            print(bothij)
            }
        }
    }
}

在这种情况下,该操作将仅适用于以下条目:

[1] "2,3"
[1] "2,5"
[1] "3,2"
[1] "4,1"

以上代码的结果为:

[1] 4
[1] 5
[1] 4
[1] 7
[1] 6
[1] 5
[1] 8
[1] 5

如何仅对每个i+i进行一次i

2 个答案:

答案 0 :(得分:0)

我已经实现了想要做的事情:

for(i in 1:5){
    if(sum(a[i,]) != 0) {
        justi= i+i 
        print(justi)
        for(j in 1:5){
            if(a[i,j] != 0){
                bothij = i+j
                print(bothij)
            }
        }
    }
}

这样我就可以得到:

[1] 4
[1] 5
[1] 7
[1] 6
[1] 5
[1] 8
[1] 5

i+i每行一次。

如果有人有更快的答案,我欢迎您提出建议。

答案 1 :(得分:-1)

您尝试过吗?

a_vector <- a[a > 0]

然后用a_vector为每个stuff做一些index