r - 加速创建矩阵列表,每个矩阵都具有来自非常大矩阵的每一列的指定维度

标签 r list performance matrix apply

我有一个非常大的矩阵,我想创建一个矩阵列表,将大矩阵的每个列向量转换为具有(相同)指定维度的矩阵(当然与向量长度兼容)。

目前我没有发现任何比使用 apply() 更快的方法。 由于我必须执行数百次,因此我需要加快这段代码的速度。

library(Rfast)
bigmat <- matrnorm(25200, 9000)
iwant  <- apply(bigmat,2,function(x) matrix(x,ncol=9), simplify=FALSE)

length(iwant)
lapply(iwant, dim)

你有什么建议吗?

最佳答案

也许数组比矩阵列表更舒服。那么这应该快 5 倍以上:

bigarray <- array(bigmat, dim=c(2800,9,9000))

您可以通过索引第三维来浏览所需的矩阵:

bigarray[,,14]

如果确实需要,您可以将其转换为列表:

biglist <- asplit(bigarray, 3)

关于r - 加速创建矩阵列表,每个矩阵都具有来自非常大矩阵的每一列的指定维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76043497/

相关文章:

ide - 如何将 Notepad++ 扩展为 R 的 IDE?

r - 如何在 ggplot 中合并颜色、线条样式和形状图例

python - 在一个键上加入两个字典列表

c# - 如何将 DataTable 转换为 List<object>?

sql - 什么会提供更好的性能,每个表或全局的专用 pgsql 触发器函数?

javascript - 如何将 TypedArray 复制到另一个 TypedArray?

java - 访问按键分组的缓存元素

r - 在一个带有单独图例的图形中绘制两种图表类型(面积和线)

r - 如何将一张工作表中包含多个表格的 Excel 文件分解为单独的数据框?

python - 连续Python中相同的13个字符的列表