【发布时间】:2015-10-12 04:03:11
【问题描述】:
我有三个使用 Matrix 包构建的 dgCMatrix 稀疏矩阵。 这两个矩阵的行顺序不同,所以我想按行名重新排序,这样我就可以将三个矩阵加在一起。 有人能提示一下快速执行此操作的方法吗?
非常感谢,
尼古拉斯
这是一个小例子,其中 ZZ 是错误的,因为矩阵的顺序不同:
dat <-data.frame(fac1=factor(c("small","large"),levels=c("small","large","medium")),fac2=factor(c("medium","large"),levels=c("medium","large","small")),fac3=factor(c("small","medium"),levels=c("small","medium","large")))
Zl <- lapply(c("fac1","fac2","fac3"), function(nm) Matrix:::fac2sparse(dat[[nm]], "d",drop=F))
ZZ <- Reduce("+", Zl[-1], Zl[[1]])
【问题讨论】:
-
我认为我不会更改存储在稀疏矩阵中的条目序列中的任何内容。对于普通的矩阵或数据框,下面的解决方案肯定有效,但我不确定在更改行的顺序后,dgCMatrix 中非零元素的索引是否仍然有意义。
标签: r sparse-matrix