Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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_List_Matrix - Fatal编程技术网

在R中匹配两个矩阵列表(按行)

在R中匹配两个矩阵列表(按行),r,list,matrix,R,List,Matrix,a和b是两个对象编号相同的列表。a和b中包含的对象都是矩阵” 我使用以下代码来计算: Map(function(a,b) matrix(sapply(1:3, function(x) {a[,x]==b[,x]}),ncol=3),a,b) [[1]] [,1] [,2] [,3] [1,] FALSE TRUE TRUE [[2]] [,1] [,2] [,3] [1,] FALSE TRUE TRUE [2,] TRUE TRUE TRUE [[3]]

a
b
是两个对象编号相同的列表。
a
b
中包含的对象都是矩阵”

我使用以下代码来计算:

Map(function(a,b) matrix(sapply(1:3, function(x) {a[,x]==b[,x]}),ncol=3),a,b)

[[1]]
      [,1] [,2] [,3]
[1,] FALSE TRUE TRUE

[[2]]
      [,1] [,2] [,3]
[1,] FALSE TRUE TRUE
[2,]  TRUE TRUE TRUE

[[3]]
     [,1]      [,2]      [,3]     
[1,] Logical,0 Logical,0 Logical,0
但我不知道如何继续求和结果,因为第三个对象中有
逻辑,0
。您能帮我吗?谢谢。或者是否有其他方法解决此问题。谢谢!

这里有一个选项:

Map(function(x,y) apply(x, 1, function(z) rowSums(z == y)), a, b)
#[[1]]
#[1] 2
#
#[[2]]
#[1] 2 3
#
#[[3]]
#numeric(0)

很好的解决方案,但它只适用于OP的示例,不适用于
a=list(结构(c(1,2,2),.Dim=c(1L,3L)),结构(c(2,1,1,1,2,2),.Dim=2:3),结构(c(1,2,2,3,2,5,3,2,1),.Dim=c(3L,3L));b=list(结构(c(2,2),.Dim=c(1L,3L)),结构(1,3,1,3),.Dim=2:3))
@m0h3n,OP指定“列表b的每个矩阵中的行号相同(nrow=1)”
Map(function(a,b) matrix(sapply(1:3, function(x) {a[,x]==b[,x]}),ncol=3),a,b)

[[1]]
      [,1] [,2] [,3]
[1,] FALSE TRUE TRUE

[[2]]
      [,1] [,2] [,3]
[1,] FALSE TRUE TRUE
[2,]  TRUE TRUE TRUE

[[3]]
     [,1]      [,2]      [,3]     
[1,] Logical,0 Logical,0 Logical,0
Map(function(x,y) apply(x, 1, function(z) rowSums(z == y)), a, b)
#[[1]]
#[1] 2
#
#[[2]]
#[1] 2 3
#
#[[3]]
#numeric(0)