在二进制矩阵中提取值为1的列名称

时间:2017-06-16 09:29:19

标签: r matrix binary

我有问题;我想从二进制矩阵开始创建一个新的矩阵,结构如下:

  A B C D E F
G 0 0 1 1 0 0
H 0 0 0 1 1 0
I 0 0 0 0 1 0
L 1 1 0 0 0 0

我想创建一个 new matrix ,由一个起始的行名称和一个名为X的新的唯一列创建,该列包含每一行的每个行的名称/名称对应矩阵数为1的时间。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

尝试使用m作为矩阵的地方:

as.matrix(apply(m==1,1,function(a) paste0(colnames(m)[a], collapse = "")))

#  [,1]
#G "CD"
#H "DE"
#I "E" 
#L "AB"

如果m很大,可能的另一个选项:

t <- which(m==1, arr.ind = TRUE)
as.matrix(aggregate(col~row, cbind(row=rownames(t), col=t[,2]), function(x) 
                                                    paste0(colnames(m)[x], collapse = "")))