【发布时间】:2015-09-07 02:45:51
【问题描述】:
我有一个 0-1 的矩阵。 我想做的是循环进入这个矩阵并搜索 1。 每次找到 1 时,只需 跳转 或通过该行,以便每行仅记录 1 个值。
我想知道序列的第一集是否是1。 我在想可能有一个解决方案
break
但我不确定如何正确使用它。
所以这是我的第一个矩阵
SoloNight = structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0), .Dim = 10:11)
这是我的空矩阵——记录1。
matSolo = matrix(0, nrow = nrow(SoloNight), ncol = ncol(SoloNight) )
这是我的循环尝试
for(i in 1:nrow(matSolo)){
for(j in 1:ncol(matSolo)){
if(SoloNight[i,j] == 1) break
{matSolo [i,j] <- 1}
}
}
在找到每行的值 1 后,我该如何break?
有什么建议吗?
(期望矩阵)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 0 0 0 0 0 0 0 0 0 0 0
[2,] 0 0 0 0 0 0 0 0 0 0 0
[3,] 0 0 0 0 0 0 0 0 0 0 0
[4,] 0 0 0 0 0 0 0 0 0 0 0
[5,] 0 0 0 0 0 0 0 0 0 0 0
[6,] 0 0 0 0 0 0 0 0 0 0 0
[7,] 0 0 0 0 0 0 0 0 0 0 0
[8,] 0 0 0 1 0 0 0 0 0 0 0
[9,] 0 1 0 0 0 0 0 0 0 0 0
[10,] 0 0 0 0 0 0 0 0 0 0 0
【问题讨论】:
-
使用
which并使用min搜索每列的前1 -
@Roland - 我用预期的矩阵编辑了
-
您应该使用整数,而不是数字,例如
0L、1L。它们占用的内存更少,使用起来更快。