如果行中的两个数字都是<;0或>;R中的0?

如果行中的两个数字都是<;0或>;R中的0?,r,matrix,subset,R,Matrix,Subset,这是我的矩阵 [,1] [,2] M -1 -5 T 8 -4 W -3 9 Th 4 5 F 7 -2 我希望我的输出包括星期一和星期四 这是我的代码,但我想看看是否可以使用其中一个apply()函数一起显示输出,并获得更高效的代码 m[m[,1]<0 & m[,2]<0,, drop=FALSE]

这是我的矩阵

             [,1]  [,2]
M            -1    -5
T             8    -4
W            -3     9
Th            4     5
F             7    -2
我希望我的输出包括星期一和星期四

这是我的代码,但我想看看是否可以使用其中一个apply()函数一起显示输出,并获得更高效的代码

m[m[,1]<0 & m[,2]<0,, drop=FALSE]

m[m[,1]>0 & m[,2]>0,,drop=FALSE]
``

m[m[,1]0,drop=FALSE]
``

是的,您可以像这样使用
apply

m[apply(m,1,函数(x)diff(符号(x))==0]
#>    [,1] [,2]
#>M-1-5
#>Th 4 5

数据

m[,1][,2]
#>M-1-5
#>T 8-4
#>W-3 9
#>Th 4 5
#>F 7-2
一个简单的基本R选项

m[do.call("*",asplit(m,2))>0,]

   [,1] [,2]
M    -1   -5
Th    4    5

带有
行和的选项

 m[!rowSums(m  < 0)|!rowSums(m > 0),]
#  [,1] [,2]
#M    -1   -5
#Th    4    5
m[!行和(m<0)|!行和(m>0),]
#  [,1] [,2]
#M-1-5
#Th 4 5
数据
m给定您的输入,您可以在%c(0,2)中执行
m[行和(m>0)]
您不需要应用(隐藏循环),而是将逻辑条件与或结合起来:
m[(m[,1]0),drop=FALSE]
我的输出是-14-5。我如何以矩阵形式输出它?@MaryJ你可以做
matrix(output,nrow=2)
m <-  structure(c(-1L, 8L, -3L, 4L, 7L, -5L, -4L, 9L, 5L, -2L), .Dim = c(5L, 
2L), .Dimnames = list(structure(c("M", "T", "W", "Th", "F"), .Dim = c(5L, 
1L), .Dimnames = list(NULL, "V1")), NULL))