Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 矩阵中所有列都相同的行之和_R - Fatal编程技术网

R 矩阵中所有列都相同的行之和

R 矩阵中所有列都相同的行之和,r,R,我试图计算所有逻辑运算符都相同的行数。下面是一个示例矩阵: x <- matrix(c(TRUE,TRUE,TRUE,TRUE, TRUE,FALSE,TRUE,TRUE, TRUE,TRUE,TRUE,TRUE, FALSE,TRUE,TRUE,TRUE), nrow=4, ncol=4) 我想做的是只使用内置函数,不使用循环或if语句来计算所有值均为TRUE(本例中为2)的行数。矩阵可以是任意大小。我完全迷路了。我的想法是检

我试图计算所有逻辑运算符都相同的行数。下面是一个示例矩阵:

x <- matrix(c(TRUE,TRUE,TRUE,TRUE,
          TRUE,FALSE,TRUE,TRUE,
          TRUE,TRUE,TRUE,TRUE,
          FALSE,TRUE,TRUE,TRUE), nrow=4, ncol=4)

我想做的是只使用内置函数,不使用循环或if语句来计算所有值均为
TRUE
(本例中为2)的行数。矩阵可以是任意大小。我完全迷路了。我的想法是检查
TRUE
行的长度,但这行不通。我是否应该将其转换为数组,然后根据行的长度进行判断,即使不知道行的长度?

您可以获得一个逻辑向量,指示哪些行都是真的,如下所示:

[,1]  [,2] [,3]  [,4]
[1,] TRUE  TRUE TRUE FALSE
[2,] TRUE FALSE TRUE  TRUE
[3,] TRUE  TRUE TRUE  TRUE
[4,] TRUE  TRUE TRUE  TRUE
apply(x, 1, all)
#> [1] FALSE FALSE  TRUE  TRUE
如果你只想数一数,那么你可以

sum(apply(x, 1, all))
#> [1] 2
我们可以使用

sum(rowSums(!x))
#[1] 2

sum(rowSums(x)=ncol(x))
sum(rowsmeans(x)==1)
已经有很多好答案了,这里有另一种方法
sum(complete.cases)(ifelse(x==T,T,NA))
@DanielO你的方法可能更有效:
sum(complete.cases(replace(x,!x,NA))
@markus效率除外,它在尊重“no if statements”。或者,如果我们允许自己使用超过一行代码,我们也可以使用
x[x==F]