【发布时间】:2015-10-19 02:23:29
【问题描述】:
我正在尝试通过在数据帧的列子集上分别从包Matrix 中调用sparse.model.matrix(),然后将它们绑定到一个完整矩阵中,从而使用拆分-应用-组合方法构建一个大型稀疏矩阵。由于内存限制,我必须这样做(我不能一次在整个 df 上调用 sparse.model.matrix )。这个过程很好,我得到了一个稀疏矩阵的列表,但是它们有不同的维度,当我尝试将它们绑定在一起时,我做不到。
例如:
data(iris)
set.seed(100)
iris$v6 <- sample(c("a","b","c",NA), 150, replace=TRUE)
iris$v7 <- sample(c("x","y",NA), 150, replace = TRUE)
sparse_m1 <- sparse.model.matrix(~., iris[,1:5])
sparse_m2 <- sparse.model.matrix(~.-1, iris[, 6:7])
dim(sparse_m1)
[1] 150 7
dim(sparse_m2)
[1] 71 4
cbind2(sparse_m1, sparse_m2)
Error: Matrices must have same number of rows in cbind2(sparse_m1, sparse_m2)
cbind(sparse_m1, sparse_m2)
Error: Matrices must have same number of rows in cbind2(..1, r)
矩阵具有相同的行名,只是在 sparse_m2 中省略了一些行,因为它们在两列中都缺少值。有没有办法把它们结合起来?
我还尝试使用 plyr 包中的 rbind.fill.matrix(),首先转置,然后调用它,然后重新转置,但随后我丢失了列名,因为 rbind.fill.matrix 中忽略了行名。
有什么想法吗?
【问题讨论】:
-
如何绑定两个行数不同的矩阵?
-
它们具有相同的行名
-
我在想可能不是 cbind,有没有一种简单的方法可以以三元组形式重新表示 dgCmatrix,然后将三元组连接在一起?
标签: r sparse-matrix