如何在R中替换二进制文件中的值?

如何在R中替换二进制文件中的值?,r,binaryfiles,seek,R,Binaryfiles,Seek,我必须使用(自定义)二进制文件格式。数据对于我的RAM来说太大了,我只需要导入其中的一小部分,进行一些计算,并用新值覆盖/替换这一部分(因此我不想导入所有内容,更改特定部分并写回所有内容) 我尝试了seek和writeBin的组合,但这会生成一个小文件,其中我的新值前面加了零: fn[1]1 2 3 fh[1]正确 寻道(fh,1L,origin=“开始”,rw=“写入”) #> [1] 0 #交换第二个值的符号 写码(-2L,fh,大小=1L) 关闭(fh) readBin(fn,what=“

我必须使用(自定义)二进制文件格式。数据对于我的RAM来说太大了,我只需要导入其中的一小部分,进行一些计算,并用新值覆盖/替换这一部分(因此我不想导入所有内容,更改特定部分并写回所有内容)

我尝试了
seek
writeBin
的组合,但这会生成一个小文件,其中我的新值前面加了零:

fn[1]1 2 3
fh[1]正确
寻道(fh,1L,origin=“开始”,rw=“写入”)
#> [1] 0
#交换第二个值的符号
写码(-2L,fh,大小=1L)
关闭(fh)
readBin(fn,what=“integer”,size=1L,n=3L)
#> [1]  0 -2
取消链接(fn)

使用
ab
模式附加到文件也没有帮助:

fn[1]1 2 3
fh[1]正确
寻道(fh,1L,origin=“开始”,rw=“写入”)
#> [1] 3
#交换第二个值的符号
写码(-2L,fh,大小=1L)
关闭(fh)
readBin(fn,what=“integer”,size=1L,n=3L)
#> [1] 1 2 3
取消链接(fn)
我的预期输出是
1-23


有没有办法在
R
中实现这一点,或者我必须使用
C
来实现这一点?

经过一些尝试和错误,我自己找到了解决方案:使用模式
“R+b”
支持数据替换

fn[1]1 2 3
fh[1]正确
寻道(fh,1L,origin=“开始”,rw=“写入”)
#> [1] 0
#交换第二个值的符号
写码(-2L,fh,大小=1L)
关闭(fh)
readBin(fn,what=“integer”,size=1L,n=3L)
#> [1]  1 -2  3
取消链接(fn)
我以前没有尝试过这个,因为
文件中的模式文档没有提供以下信息:

“wb”打开以二进制模式写入

“ab”打开以二进制模式追加

“r+”、“r+b”开放供阅读和写作