我有问题;我想从二进制矩阵开始创建一个新的矩阵,结构如下:
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的时间。
我该怎么办?
答案 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 = "")))