gpt4 book ai didi

r - 将小整数写入 R 中的二进制文件

转载 作者:行者123 更新时间:2023-12-01 04:09:43 25 4
gpt4 key购买 nike

我有一个关于在 R 中写入二进制文件的问题。我正在研究数据压缩,我想写入一个可以用两个字节表示的二进制文件整数,但 R 用 4 个字节表示它们。是否有任何数据类型可以存储两字节或一字节的数字(类似于 C 中的短整数)?

如果没有,当您使用带有小整数(例如可以保存在 1 个字节中)且 size=1 的 writeBin 时,程序是写入整数的所有 4 个字节(包括 0 个字节)还是将其转换为 1字节。

这对我来说是一个非常重要和紧迫的问题,您的帮助将不胜感激。如果您知道有关写入二进制文件的全面帮助,请告诉我。谢谢!

(有时,当我使用大小等于小数的 writeBin 时,我收到一条错误消息,说我的机器上未定义大小。我该如何解决?将整数写入文件以进行压缩的最佳方法是什么(以有尽可能小的文件)?原始数据类型有帮助吗?)

最佳答案

你可能让你的生活太复杂了。 R 在 save() 中默认使用压缩,你有没有测量过这还不够好?一个例子:

R> vec <- rep(1L, 100)                 ## 100 integer elements
R> object.size(vec)
440 bytes ## so there must be a 40 byte overhead
R> str(vec)
int [1:100] 1 1 1 1 1 1 1 1 1 1 ...
R> save( vec, file="/tmp/vec.RData")
R> file.info("/tmp/vec.RData")[1:3]
size isdir mode
/tmp/vec.RData 64 FALSE 644 ## stored to 64 bytes!
R>

您可能会争辩说重复值非常适合压缩,但它们甚至可能适用于您的数据集?

否则,不妨试试 CRAN 包 ff它支持一字节和两字节类型。

最后,如果你想要完全控制,你可以使用 C 或 C++ 来分配更短的整数类型,甚至 char类型。有一个 package I could recommend for interfacing C++ ...

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

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