Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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,在R中,我想计算矩阵的一列中出现的不同值的数量,但前提是某个值出现在另一列中。为了澄清,考虑这个矩阵: MAT <- matrix(nrow=5,ncol=2, c(1,0,1,1,2,1,1,1,2,0)) 我想查找在第2列中出现的“1”的数量,但仅当“0”出现在同一行的第1列中时。我知道的唯一一个做类似事情的函数是table,但我认为它不能检查其他列;它只能排除正在检查的数据中的值。(如果我错了,请纠正我。)我曾尝试在互联网上搜索,但我只找到无关问题的答案 有人能帮我找到解决此问题的

在R中,我想计算矩阵的一列中出现的不同值的数量,但前提是某个值出现在另一列中。为了澄清,考虑这个矩阵:

MAT <- matrix(nrow=5,ncol=2, c(1,0,1,1,2,1,1,1,2,0))
我想查找在第2列中出现的“1”的数量,但仅当“0”出现在同一行的第1列中时。我知道的唯一一个做类似事情的函数是
table
,但我认为它不能检查其他列;它只能排除正在检查的数据中的值。(如果我错了,请纠正我。)我曾尝试在互联网上搜索,但我只找到无关问题的答案


有人能帮我找到解决此问题的函数吗?

您可以这样做:

sum(MAT[,2]==1 & MAT[,1]==0)

您可以这样做:

sum(MAT[,2]==1 & MAT[,1]==0)

始终可以使用以下条件对矩阵进行子集:

 > MAT
     [,1] [,2]
[1,]    1    1
[2,]    0    1
[3,]    1    1
[4,]    1    2
[5,]    2    0
MAT[ MAT[,1] == 0, ]
table( MAT[ MAT[,1] == 0, ] )

始终可以使用以下条件对矩阵进行子集:

 > MAT
     [,1] [,2]
[1,]    1    1
[2,]    0    1
[3,]    1    1
[4,]    1    2
[5,]    2    0
MAT[ MAT[,1] == 0, ]
table( MAT[ MAT[,1] == 0, ] )

这将为您提供以下行:

which(MAT[,1]==0 & MAT[,2]==1)

其中的
长度
是该模式出现的次数。

这将为您提供以下行:

which(MAT[,1]==0 & MAT[,2]==1)

其中的
长度
是该模式出现的次数。

您可以使用

table(MAT[,2]==1 & MAT[,1]==0)
FALSE  TRUE 
    4     1 

您可以使用

table(MAT[,2]==1 & MAT[,1]==0)
FALSE  TRUE 
    4     1 
应用(MAT,1,函数(x)x[1]==0和x[2]==1)
应用(MAT,1,函数(x)x[1]==0和x[2]==1)