【发布时间】:2015-05-31 06:18:54
【问题描述】:
操作系统:Linux Centos 6.5 / Centos 7
机器:“特殊”2.5 TB 物理内存(是的,真的)
编程语言:R
问题: 在 R 中,实践(似乎是)在循环之前分配一个与最终结果一样大的矩阵。在这种情况下,最终矩阵大小在开始时是不确定的。
因此,在 R 中创建扩展矩阵的最简洁方法是什么?
一个关键点是我想避免在扩展点内存复制的开销。 如果这是唯一的方法,那可以,但不是首选
重要提示:我非常熟悉内核级编程、内核级内存管理、页面处理系统等。我是R新手,正在学习R。(非常有趣, 并且有用) 在这种情况下,我特别尝试创建一个场景来演示矩阵的内存扩展,而无需预先分配内存,或者回退到分配大小为 N 的矩阵扩展(增量扩展使用内存块)。
问题示例
好的,在所描述的场景中,我们可能会创建矩阵 A,创建扩展矩阵 B,将 A 复制到 B,然后对更大的矩阵执行操作。
另一种方法是扩展 A,填充结果并迭代...
例如,我们可能从使用 outer() 开始,但是 "outer()" 在每次调用时都会创建一个 new 矩阵。我正在寻找扩展现有矩阵...
x<- outer(1:2,1:2,"*")
x
[,1] [,2]
[1,] 1 2
[2,] 2 4
...
x<-outer(1:3,1:3,"*")
x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
...
x<-outer(1:3,1:3,"*")
x
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
[4,] 4 8 12 16
因此,我的问题:
“在 R 中创建动态分配矩阵的首选方法是什么,无需预先分配大矩阵?”
提前感谢大家的指点和阅读建议。非常感谢您的帮助。
【问题讨论】:
-
你会在R Inferno找到很多关于代码优化的信息。