gpt4 book ai didi

r - 在 R 中写入二进制文件

转载 作者:行者123 更新时间:2023-12-05 00:37:25 30 4
gpt4 key购买 nike

我被要求在两个二进制文件中编写 R 输出,一个索引文件和一个主数据文件。索引文件中的每个 id 对应一个矩阵/块。我已经在互联网上阅读了关于在 R 中编写二进制文件的信息,但我不确定如何指定格式以便我可以实现这种格式?

另外,我们可以在 R 中指定短整数吗?他说他希望数字是短整数(两个字节),我不想要这意味着什么。

我感谢任何输入!谢谢

最佳答案

由于你没有把问题描述的很清楚,我在下面的示例代码中做了一些假设。给定一个矩阵列表,它将它们保存到 .bin文件并创建一个 .idx带有偏移量的文件。然后您可以在给定索引的情况下再次加载它们。您提到的 2 字节大小未使用 - 它将矩阵数据保存为 8 字节 double 或 4 字节整数(但您可以更改它)。

这是它的使用方法:

mtx <- list(matrix(1:12,4), matrix(sin(1:12),4))
saveMatrixList("c:/foo", mtx)

loadMatrix("c:/foo", 1)
loadMatrix("c:/foo", 2)

...这里是功能:
saveMatrixList <- function(baseName, mtxList) {
idxName <- paste(baseName, ".idx", sep="")
idxCon <- file(idxName, 'wb')
on.exit(close(idxCon))

dataName <- paste(baseName, ".bin", sep="")
con <- file(dataName, 'wb')
on.exit(close(con))

writeBin(0L, idxCon)

for (m in mtxList) {
writeBin(dim(m), con)
writeBin(typeof(m), con)
writeBin(c(m), con)
flush(con)

offset <- as.integer(seek(con))
cat('offset', offset)
writeBin(offset, idxCon)
}

flush(idxCon)
}

loadMatrix <- function(baseName = "data", index) {
idxName <- paste(baseName, ".idx", sep="")
idxCon <- file(idxName, 'rb')
on.exit(close(idxCon))

dataName <- paste(baseName, ".bin", sep="")
con <- file(dataName, 'rb')
on.exit(close(con))

seek(idxCon, (index-1)*4)
offset <- readBin(idxCon, 'integer')

seek(con, offset)
d <- readBin(con, 'integer', 2)
type <- readBin(con, 'character', 1)
structure(readBin(con, type, prod(d)), dim=d)
}

关于r - 在 R 中写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989650/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com