如何在特定条件下查找R中的特定行或列

时间:2015-08-30 19:55:58

标签: arrays r matrix find row

例如,如果我们有一个矩阵或说数组具有以下格式

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循环来处理它。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

 which(apply(M, 1, sum) == 0 )
[1] 3
 which(apply(M, 2, sum) == 0 )
[1] 3

使用1的位置搜索行并使用2列。结果告诉您哪些行和列全部为零。使用M,您可以看到第3行和第3列只有零。

或者根据Akrun的建议,您可以使用速度更快的rowSumscolSums

 which(rowSums(M) == 0)
[1] 3
 which(colSums(M) == 0)
[1] 3