将 dgCMatrix 转换为数据框

Convert a dgCMatrix to data frame

我想将以下稀疏矩阵 dgCMatrix 转换为数据框:

744 x 1 sparse Matrix of class "dgCMatrix"

矩阵如下所示:

$group_x

744 x 1 sparse Matrix of class "dgCMatrix"
      1
ABCZ  4
ACDY  .        
KDEF  .        
AKDA  .        
LOLP  .        
RABQ  .        
OPWQ  .        
....
LDLX 10.0

我尝试了通常的 as.data.frame(as.matrix(group_x)) 但我得到以下信息:

A data.frame: 1 x 1
V1
<named list>
group_x <S4 class ‘dgCMatrix’ [package “Matrix”] with 6 slots>

寻求的输出是一个 744x2 的数据框,如下所示:

Group Value
ABCZ  4
ACDY  0        
KDEF  0        
AKDA  0        
LOLP  0        
RABQ  0        
OPWQ  0        
....
LDLX 10.0

我认为你的矩阵在列表中。

library(Matrix)
m <- matrix(c(1,4,rep(0,100),10), ncol = 1)
group_x <- as(m, "Matrix")

as.data.frame(as.matrix(..)) 工作正常:

str(as.data.frame(as.matrix(group_x)))
## 'data.frame':    103 obs. of  1 variable:
##  $ V1: num  1 4 0 0 0 0 0 0 0 0 ...

但是:

gx <- list(group_x)
as.data.frame(as.matrix(gx))
##                                                       V1
## 1 <S4 class ‘dgCMatrix’ [package “Matrix”] with 6 slots>

所以如果你有 gx,那么

data.frame(Group = rownames(gx[[1]]), Value = gx[[1]][,1])

应该可以。