r - 如何从 R Matrix 库访问稀疏矩阵的一些元素?

标签 r sparse-matrix

假设我有一个大的稀疏矩阵:

library(Matrix)
nrow <- 223045
ncol <- 9698
big <- Matrix(0, nrow, ncol, sparse = TRUE)
big[1, 1] <- 1

现在我想访问第一个元素:

big[1]
Error in asMethod(object) : 
  Cholmod error 'problem too large' at file ../Core/cholmod_dense.c, line 105

出于某种原因,它试图将我的矩阵转换为密集矩阵。事实上,看起来该方法是从 Matrix 继承的,而不是从稀疏类继承的:

showMethods("[")
[...]
x="dgCMatrix", i="numeric", j="missing", drop="missing"
    (inherited from: x="Matrix", i="index", j="missing", drop="missing")
[...]

当然我可以使用完整的[i, j]索引

big[1, 1]

但我想访问整个矩阵中的一些随机元素,比如

random.idx <- c(1880445160,  660026771, 1425388501,  400708750, 2026594194, 1911948714)
big[ random.idx ]

并且无法使用 [i, j] 符号访问它们(或者您需要按元素进行操作,效率不高)。

如何在不将矩阵转换为密集矩阵的情况下访问该矩阵的随机元素?欢迎使用替代解决方案(其他包等)。

最佳答案

可以直接使用S4提取@提取Matrix的元素,无需先将其转换为普通矩阵。例如,

big@x[1]
big@x[random.idx]

事实上,您还可以提取其他属性。参见 str(big)

关于r - 如何从 R Matrix 库访问稀疏矩阵的一些元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26849898/

相关文章:

r - 如何根据 r 中元素的第一位保留行?

r - R中带有分组列的ggplot2条形图,如何取消堆叠?

c - SpMV 算法的大小与时间图中的不规则时间跳跃

python - 如何从大的稀疏 csc 矩阵中获取列

julia - 在 Julia 中初始化任意稀疏数组

r - dplyr重命名错误:包含未知变量

r - 从数据框列表中按顺序提取每一列

r - 总结数据框中的因素

python - 通过 API 请求高效发送稀疏矩阵 numpy

python - 转换为稀疏矩阵 - TypeError : no supported conversion for types: (dtype ('0' ), )