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)