例如,如果我们有一个矩阵或说数组具有以下格式
M = matrix(c(1,1,0,0,0,1,0,1,0,0,0,0,1,1,0,1), # the data elements
nrow=4, # number of rows
ncol=4, # number of columns
byrow = TRUE) # fill matrix by rows
如何查找哪些行和列内部只有0的索引? 如果我们有一个更复杂的矩阵,我们需要在行或列中查找内部所有数字都在特定的时间间隔内呢?
M = matrix(c(1,1,12,34,0,19,15,1,0,17,12,0,21,1,11,1), # the data elements
nrow=4, # number of rows
ncol=4, # number of columns
byrow = TRUE) # fill matrix by rows
我应该如何找到所有数字在(10 - 20)之间的列?
非常感谢任何可以提供帮助的人。
而且,我也不能使用for或while循环来处理它。
答案 0 :(得分:2)
你可以这样做:
which(apply(M, 1, sum) == 0 )
[1] 3
which(apply(M, 2, sum) == 0 )
[1] 3
使用1
的位置搜索行并使用2
列。结果告诉您哪些行和列全部为零。使用M
,您可以看到第3行和第3列只有零。
或者根据Akrun的建议,您可以使用速度更快的rowSums
和colSums
。
which(rowSums(M) == 0)
[1] 3
which(colSums(M) == 0)
[1] 3