R 当我们对稀疏矩阵应用()时,它会自动将其转换为稠密矩阵吗?

R 当我们对稀疏矩阵应用()时,它会自动将其转换为稠密矩阵吗?,r,matrix,R,Matrix,运行以下代码: aa = Matrix(0, nrow = 8000000, ncol = 100000, sparse = TRUE) object.size(aa) # 401424 bytes apply(aa, 1, mean) 我得到这个错误: asMethod(对象)中出错: 文件../Core/Cholmod_densed.c第105行的Cholmod错误“问题太大” 在这种情况下,aa的大小不是太大,因此我猜apply函数会自动将其转换为密集矩阵。有什么办法可以让它工作吗?我知

运行以下代码:

aa = Matrix(0, nrow = 8000000, ncol = 100000, sparse = TRUE)
object.size(aa)
# 401424 bytes
apply(aa, 1, mean)
我得到这个错误:

asMethod(对象)中出错: 文件../Core/Cholmod_densed.c第105行的Cholmod错误“问题太大”


在这种情况下,
aa
的大小不是太大,因此我猜
apply
函数会自动将其转换为密集矩阵。有什么办法可以让它工作吗?我知道
rowMeans
可以很容易地替换
apply(aa,1,means)
,但是如果我想用一些其他定制功能来应用呢

如果在不使用
()
的情况下查看
apply
,可以看到调用
apply()
时实际发生的情况

功能(X、边距、乐趣等)
{

有趣的是,也许可以签出或包?我确实认为aa的大小可能太大了。您是否尝试过使用较小的矩阵(例如800 x 1000)。这是否有效?它在我的电脑上运行良好。因此,您是否知道专门为稀疏dgCmatrix类编写的任何应用函数?
bb = matrix(0, nrow = 8000000, ncol = 100000)
Error: cannot allocate vector of size 5960.5 Gb
In addition: Warning messages:
1: In matrix(0, nrow = 8e+06, ncol = 1e+05) :
Reached total allocation of 8075Mb: see help(memory.size)