【发布时间】:2016-03-22 16:21:08
【问题描述】:
a 和 b 是列表。
a<-list(matrix(1:36,9),matrix(7:38,8))
b<-list(matrix(c(1,1,1,1,0,0,1,0,1,1,0,0,0,1,1,1,0,0),9),matrix(c(1,0,0,1,0,0,0,1),8))
a 和 b 中对象的行数相同。我想从 a 中提取行,其中 b 中的值等于 1。
我使用以下代码:
Map(function(a,b) sapply(1:ncol(b), function(x) {a[which(b[,x]==1),]}), a,b)
但是第二个对象的结果没有显示在矩阵中:
[[1]]
[[1]][[1]]
[,1] [,2] [,3] [,4]
[1,] 1 10 19 28
[2,] 2 11 20 29
[3,] 3 12 21 30
[4,] 4 13 22 31
[5,] 7 16 25 34
[6,] 9 18 27 36
[[1]][[2]]
[,1] [,2] [,3] [,4]
[1,] 1 10 19 28
[2,] 5 14 23 32
[3,] 6 15 24 33
[4,] 7 16 25 34
[[2]]
[,1]
[1,] 7
[2,] 10
[3,] 14
[4,] 15
[5,] 18
[6,] 22
[7,] 23
[8,] 26
[9,] 30
[10,] 31
[11,] 34
[12,] 38
你能帮帮我吗,谢谢!
【问题讨论】:
-
在
blist中,第一个元素是具有2 列的matrix。那么,有 1 个值的条件是什么 -
@akrun 所以我们需要根据第一个元素的每一列输出两个矩阵