我有一个矩阵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
?
答案 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