过滤掉R中仅包含0的矩阵中的行

Eli*_*eth 3 r matrix

我有矩阵

m <- matrix(c(1, 0, 3, 4, 0, 6), 3)
Run Code Online (Sandbox Code Playgroud)

我需要过滤出两个列的值都为0的行,这些行实际上返回了矩阵:

m <- matrix(c(1, 3, 4, 6), 3)
Run Code Online (Sandbox Code Playgroud)

我试过了

m[m[, 1] > 0 & m[, 2] > 0]
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个向量而不是一个只有0的行的矩阵.这应该很简单,但我被卡住了.

谢谢, - 伊丽莎白

Blu*_*der 6

您在自己的解决方案中只缺少",".使用

m[m[,1]>0 & m[,2]>0,]
Run Code Online (Sandbox Code Playgroud)

它会起作用:

> m[m[,1]>0 & m[,2]>0,]
     [,1] [,2]
[1,]    1    4
[2,]    3    6
Run Code Online (Sandbox Code Playgroud)


Jul*_*ora 6

如果你有很多列

m
     [,1] [,2]
[1,]    1    4
[2,]    0    0
[3,]    3    6
m^2
     [,1] [,2]
[1,]    1   16
[2,]    0    0
[3,]    9   36
rowSums(m^2)
[1] 17  0 45
m[rowSums(m^2)>0,]
     [,1] [,2]
[1,]    1    4
[2,]    3    6
Run Code Online (Sandbox Code Playgroud)