2012-06-19 28 views
2

我有矩阵过滤出的行中的矩阵只包含0中的R

m <- matrix(c(1, 0, 3, 4, 0, 6), 3) 

我需要过滤掉行,其中两列具有值0时生效的矩阵返回:

m <- matrix(c(1, 3, 4, 6), 3) 

我试图

m[m[, 1] > 0 & m[, 2] > 0] 

但这返回一个矢量,而不是汽提行的矩阵的仅具有0。这应该是SIMP但我被卡住了。

感谢, -Elizabeth

回答

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 
+0

再次拯救!谢谢。你能告诉我^做什么或者指导我到帮助页面吗?我搜索了^ ^和?rowSum但找不到任何东西。谢谢! – Elizabeth

+0

不客气。我更新了答案,因为你可以看到'^'是元素明智的力量。并且它是rowsum {** s **} – Julius

+0

@伊丽莎白,还有一件事,对象'^'这样的符号它是?'^',也是?'['' – Julius

6

你只是缺少一个 “” 在自己的解决方案。 使用

m[m[,1]>0 & m[,2]>0,] 

,它会工作:

> m[m[,1]>0 & m[,2]>0,] 
    [,1] [,2] 
[1,] 1 4 
[2,] 3 6 
+0

你说得对!这可能是我应该回家的日子:) – Elizabeth