如何从稀疏矩阵中获取行列对
how to get row-column pairs from sparse matrix
假设我有一个稀疏矩阵 M1
i<-c(1,5,2,4,2,2,8)
j<-c(2,5,3,2,4,2,4)
x<-rpois(7,2)
M1<-sparseMatrix(i,j,x=x)
rownames(M1) <- c("a", "b", "c", "d", "e", "f", "g", "h")
colnames(M1) <- c("L1", "L2", "L3", "L4", "L5")
M1
M1 看起来像:
8 x 5 sparse Matrix of class "dgCMatrix"
L1 L2 L3 L4 L5
a . 3 . . .
b . 1 3 0 .
c . . . . .
d . 4 . . .
e . . . . 1
f . . . . .
g . . . . .
h . . . 0 .
我如何在类似于以下内容的列表中创建一组交互行列对:
(a, L2)
(b, L2)
(b, L3)
(b, L4)
(d, L2)
(e, L5)
(h, L4)
谢谢!
在逻辑矩阵上使用 which
和 arr.ind = TRUE
,并根据 row/col
索引
提取行名和列名
i1 <- which(M1 > 0, arr.ind = TRUE)
library(dplyr)
tibble(rn = row.names(M1)[i1[,1]], cn = colnames(M1)[i1[,2]]) %>%
arrange(rn)
-输出
# A tibble: 7 x 2
rn cn
<chr> <chr>
1 a L2
2 b L2
3 b L3
4 b L4
5 d L2
6 e L5
7 h L4
您可以使用下面的代码
with(
summary(t(M1)),
data.frame(i = row.names(M1)[j], j = colnames(M1)[i])
)
这给出了
i j
1 a L2
2 b L2
3 b L3
4 b L4
5 d L2
6 e L5
7 h L4
假设我有一个稀疏矩阵 M1
i<-c(1,5,2,4,2,2,8)
j<-c(2,5,3,2,4,2,4)
x<-rpois(7,2)
M1<-sparseMatrix(i,j,x=x)
rownames(M1) <- c("a", "b", "c", "d", "e", "f", "g", "h")
colnames(M1) <- c("L1", "L2", "L3", "L4", "L5")
M1
M1 看起来像:
8 x 5 sparse Matrix of class "dgCMatrix"
L1 L2 L3 L4 L5
a . 3 . . .
b . 1 3 0 .
c . . . . .
d . 4 . . .
e . . . . 1
f . . . . .
g . . . . .
h . . . 0 .
我如何在类似于以下内容的列表中创建一组交互行列对:
(a, L2)
(b, L2)
(b, L3)
(b, L4)
(d, L2)
(e, L5)
(h, L4)
谢谢!
在逻辑矩阵上使用 which
和 arr.ind = TRUE
,并根据 row/col
索引
i1 <- which(M1 > 0, arr.ind = TRUE)
library(dplyr)
tibble(rn = row.names(M1)[i1[,1]], cn = colnames(M1)[i1[,2]]) %>%
arrange(rn)
-输出
# A tibble: 7 x 2
rn cn
<chr> <chr>
1 a L2
2 b L2
3 b L3
4 b L4
5 d L2
6 e L5
7 h L4
您可以使用下面的代码
with(
summary(t(M1)),
data.frame(i = row.names(M1)[j], j = colnames(M1)[i])
)
这给出了
i j
1 a L2
2 b L2
3 b L3
4 b L4
5 d L2
6 e L5
7 h L4