gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:16:35 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com