Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中将二进制文件分解为更小的部分_R_Binary - Fatal编程技术网

在R中将二进制文件分解为更小的部分

在R中将二进制文件分解为更小的部分,r,binary,R,Binary,我有几个大文件,我想把它们转换成二进制文件。一旦它是二进制的,我想使每一块小于5GB。所以,不管有多少,它们都以对象的形式存在于R中 我不确定从哪里开始,但通常我都是通过psuedocode file <- ***FILE PATH**** binFile <- writeBin(file,con) # loop through length of 'binFile' until file.size() = 5000000 then write to a list, contin

我有几个大文件,我想把它们转换成二进制文件。一旦它是二进制的,我想使每一块小于5GB。所以,不管有多少,它们都以对象的形式存在于R中

我不确定从哪里开始,但通常我都是通过psuedocode

file <- ***FILE PATH****

binFile <- writeBin(file,con)

# loop through length of 'binFile' until file.size() = 5000000 then write to a list, continue with the rest and repeat til the whole file is complete.

#Then each item in the list can be called.


file您可以将一个大文件拆分为多个块,而无需将整个文件加载到内存中。这里有一个函数可以做到这一点

您可以为它提供大文件的路径、要保存块的目录的路径以及最大块大小

所有文件都将以大文件名、区块编号和文件类型
.bin
保存

原始文件保持不变

如果您想将数据块作为二进制读入R,您可以使用
readBin


chop_file您可以将一个大文件拆分为多个块,而无需将整个文件加载到内存中。这里有一个函数可以做到这一点

您可以为它提供大文件的路径、要保存块的目录的路径以及最大块大小

所有文件都将以大文件名、区块编号和文件类型
.bin
保存

原始文件保持不变

如果您想将数据块作为二进制读入R,您可以使用
readBin


chop_文件这很好;如果我不想实际保存块呢?也就是说,如果我希望它们只存在于R中,当我运行完函数后,它们会被删除?而且,拥有所有的部分,有没有一种简单的方法可以将它们重新组合在一起?在这种情况下,Johnny,不是用writeBin将它们写入一个文件,而是在此时处理块。因此,您将使用
my\u processing\u函数(数据)
而不是writeBin(数据)。您可能还需要一个列表来存储中间结果@JohnnyThomas@JohnnyThomas你是说把它们放回磁盘还是R的内存?我想我明白你的意思了?你能把你的代码更新到,这样我就可以看到这个动作了吗?把它们放在R的内存中,R已经作为原始文件存在了,但这更像是一件好奇的事情,因为是否有可能把垃圾箱文件缝合在一起,使它们看起来像原始文件,这很好;如果我不想实际保存块呢?也就是说,如果我希望它们只存在于R中,当我运行完函数后,它们会被删除?而且,拥有所有的部分,有没有一种简单的方法可以将它们重新组合在一起?在这种情况下,Johnny,不是用writeBin将它们写入一个文件,而是在此时处理块。因此,您将使用
my\u processing\u函数(数据)
而不是writeBin(数据)。您可能还需要一个列表来存储中间结果@JohnnyThomas@JohnnyThomas你是说把它们放回磁盘还是R的内存?我想我明白你的意思了?你能把你的代码更新到,这样我就可以看到这个动作了吗?把它们放在R的内存中,R已经作为原始文件存在了,但这更像是一件好奇的事情,因为是否有可能将bin文件缝合在一起,使其看起来像原始文件
dir("C:/Users/Me/pdfs/")
# [1] bigfile.pdf
chop_file("C:/Users/Me/pdfs/bigfile.pdf", "C:/Users/Me/chunks/", 1e6)
#>  File C:/Users/Me/pdfs/bigfile.pdf split into 10 chunks
dir("C:/Users/Me/chunks/")
#> [1] "bigfilepdf1.bin"  "bigfilepdf2.bin"  "bigfilepdf3.bin"  "bigfilepdf4.bin" 
#> [5] "bigfilepdf5.bin"  "bigfilepdf6.bin"  "bigfilepdf7.bin"  "bigfilepdf8.bin" 
#> [9] "bigfilepdf9.bin"  "bigfilepdf10.bin"
identical(data, readBin("C:/Users/Me/pdfs/bigfile.pdf", "raw", 1e7))
#> [1] TRUE