在 R 中读取大型 .mat 文件
Reading large .mat file in R
我正在尝试将一个大矩阵读入 R。
该矩阵的维度为:3'987'288 x 93,大约有 3GB 大小。 (Class = 双)
它保存为 .mat 文件(不是 v7.3 .mat 文件)
我尝试用 R.matlab 包读取矩阵:
require(R.matlab)
A <- readMat('dat_2imp.mat')
然而,它导致了这个错误:
Error in seq.int(from = rawBufferOffset + 1L, to = rawBufferOffset + nbrOfBytes, :
wrong sign in 'by' argument
我没有找到关于此错误消息的有价值的信息。
但是,我认为这可能是由于矩阵的大小。有人知道如何解决这个问题吗?
遗憾的是,我不允许共享原始数据并使其完全可复制。
错误应该是readMat代码中第88行的函数引发的:
# Access source code:
View(R.matlab:::readMat.default)
# In line 88 defined function:
readRawBuffer <- function(nbrOfBytes) {
nTotal <- length(rawBuffer)
if (nTotal == 0L) {
return(raw(0L))
}
idxs <- seq.int(from = rawBufferOffset + 1L, to = rawBufferOffset +
nbrOfBytes, by = 1L)
rawBuffer[idxs]
}
对我来说,定义的“by”是合法的,因此错误对我来说没有意义?
显然 V7.3 不是唯一不兼容的 mat 文件版本。如 RDocuments、
中所述
readMat: Reads a MAT file structure from a connection or a file Description
Reads a MAT file structure from a connection or a file. Both the MAT
version 4 and MAT version 5 file formats are supported.
长话短说,版本 4 和版本 5 无法将如此大的数据集保存在一个文件中。我认为至少有 2 个解决方案是直截了当的:
以不同的文件格式交换数据,例如HDF5 或 SQLite。此类文件在 R 和 matlab 中都得到了很好的支持,并且没有兼容性问题。
使用“-v4”开关在第 4 版的 matlab 中保存 mat 文件,但第 4 版有大小上限,因此您可能需要将数据拆分到多个文件中.
我正在尝试将一个大矩阵读入 R。 该矩阵的维度为:3'987'288 x 93,大约有 3GB 大小。 (Class = 双) 它保存为 .mat 文件(不是 v7.3 .mat 文件)
我尝试用 R.matlab 包读取矩阵:
require(R.matlab)
A <- readMat('dat_2imp.mat')
然而,它导致了这个错误:
Error in seq.int(from = rawBufferOffset + 1L, to = rawBufferOffset + nbrOfBytes, :
wrong sign in 'by' argument
我没有找到关于此错误消息的有价值的信息。 但是,我认为这可能是由于矩阵的大小。有人知道如何解决这个问题吗? 遗憾的是,我不允许共享原始数据并使其完全可复制。
错误应该是readMat代码中第88行的函数引发的:
# Access source code:
View(R.matlab:::readMat.default)
# In line 88 defined function:
readRawBuffer <- function(nbrOfBytes) {
nTotal <- length(rawBuffer)
if (nTotal == 0L) {
return(raw(0L))
}
idxs <- seq.int(from = rawBufferOffset + 1L, to = rawBufferOffset +
nbrOfBytes, by = 1L)
rawBuffer[idxs]
}
对我来说,定义的“by”是合法的,因此错误对我来说没有意义?
显然 V7.3 不是唯一不兼容的 mat 文件版本。如 RDocuments、
中所述readMat: Reads a MAT file structure from a connection or a file Description
Reads a MAT file structure from a connection or a file. Both the MAT version 4 and MAT version 5 file formats are supported.
长话短说,版本 4 和版本 5 无法将如此大的数据集保存在一个文件中。我认为至少有 2 个解决方案是直截了当的:
以不同的文件格式交换数据,例如HDF5 或 SQLite。此类文件在 R 和 matlab 中都得到了很好的支持,并且没有兼容性问题。
使用“-v4”开关在第 4 版的 matlab 中保存 mat 文件,但第 4 版有大小上限,因此您可能需要将数据拆分到多个文件中.