【问题标题】:Extract column names with value 1 in binary matrix提取二进制矩阵中值为 1 的列名
【发布时间】:2017-11-19 00:32:19
【问题描述】:

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

  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

我想创建一个新矩阵,该矩阵由起始行的行名和一个新的唯一列(称为 X)组成,其中包含每一行、每列的名称/名称时间对应的矩阵数为1。

我该怎么办?

【问题讨论】:

标签: r matrix binary


【解决方案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 = "")))

【讨论】:

  • 我测试了一个dim 1e+5 x 100矩阵所花费的时间,第一种方法要快得多。
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 2020-04-21
  • 2016-03-06
  • 1970-01-01
相关资源
最近更新 更多