列出具有矩阵的某些值的位置

时间:2017-04-02 20:20:50

标签: r list matrix

我有一个包含10的矩阵。例如:

M1 = matrix(c(1, 0, 1, 0, 1, 0), nrow=2, ncol=3, byrow = TRUE)
row.names(M1) <- c(100, 101)
colnames(M1) <- c("A", "B", "C")
M1

    A B C
100 1 0 1
101 0 1 0

现在我想用以下语法创建矩阵中所有values=1的列表:

"row name"."column name", value

在这个例子中,我正在寻找的解决方案是:

100.A, 1
100.C, 1
101.B, 1

2 个答案:

答案 0 :(得分:2)

试试这个:

paste0(row.names(M1==1), ".", colnames(M1==1))

或者如果你想加1:

data.frame(result = paste0(row.names(M1==1), ".", colnames(M1==1), ", 1"))

编辑:1次超过1次时更正

result <- list()
for (i in 1:nrow(M1)){
  result[[i]] <- data.frame(result = paste0(rep(row.names(M1)[i], length(colnames(M1)[M1[i,]==1])), ".", colnames(M1)[M1[i,]==1], ", 1"))
}
result <- do.call(rbind, result)
result <- unique(result)

答案 1 :(得分:1)

试试这个:

x <- which(M1==1, arr.ind = TRUE)
data.frame(COL=paste0(rownames(M1)[x[,1]], ".", colnames(M1)[x[,2]], ", ", 1))

#       COL
#1 100.A, 1
#2 101.B, 1
#3 100.C, 1