在R中,我有n个数字x_1
,...,x_n
介于0和1之间,并希望将它们保存为压缩有损,这样每个数字只需要一个字节:
对于{1,...,n}中的k
将每个x_k
四舍五入到i_k*1/255
表单的下一个数字,其中i_k
位于集合{1,...,255}
然后我想将n个数字i_1
,...,i_n
保存为文件中的字节。
这将导致文件大小为n个字节。从文件中再次检索x_1
,...,x_n
的近似值的反向操作也是我感兴趣的。
我如何在R?
中实现这一目标答案 0 :(得分:2)
set.seed(0)
x <- runif(1024*400)
y=as.raw(255*x)
save(y, file="test.raw")
在我的操作系统上创建一个401kb的文件,用于存储400kb - 我假设存储文件大小有轻微的开销。
rm(y)
load("test.raw")
rbind(x=head(x),y=head(as.numeric(y)/255))
# [,1] [,2] [,3] [,4] [,5] [,6]
#x 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
#y 0.8941176 0.2627451 0.3686275 0.5725490 0.9058824 0.2000000
正如您所料,由于存储限制,小数点后三位的准确度会下降