我有一个包含1
和0
的矩阵。例如:
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
答案 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