R:将二进制文件转换为矩阵

Posted

技术标签:

【中文标题】R:将二进制文件转换为矩阵【英文标题】:R: Convert binary file to matrix 【发布时间】:2016-04-20 13:34:05 【问题描述】:

R:我用 readBin 将一个大的二进制文件(数字,一个数组)上传到 R 中。 我的数据由大于 10000 和小于 10000 的值组成,例如

25685, 5, 6, 2, 1, 5, 46789, 6, 2, 9, 44220, 5, 1, 3, 7, 9, 12, 88952, 6, 8,...

如何分隔值,以便创建矩阵?

1: 25685, 5, 6, 2, 1, 5

2: 46789, 6, 2, 9

3: 44220, 5, 1, 3, 7, 9, 12

应该在最后一个小值和上面的大值之间分开。

【问题讨论】:

sep12000) # 时间步长 len 【参考方案1】:
name<-file(".dat", "rb")
size<-(file.info("Path/Name.dat")$size)/8
rB<-readBin(name, numeric(), size, endian="little")
size<-length(rB)
sep<-which(rB>10000) # time steps
len<-diff(sep,1) # lags
len<-c(len,(length(rB)-tail(sep,1)+1)) # last value
mat<-matrix(NA,(size-length(sep)+14),4) # matrix
for(i in 1:(length(sep))) # fill the matrix

mat[sep[i]:(sep[i]+len[i]-2),1]<-i
mat[(sep[i]):(sep[i]+len[i]-2),2]<-(1:(len[i]-1))
mat[(sep[i]):(sep[i]+len[i]-2),3]<-rB[sep[i]]    
mat[(sep[i]):(sep[i]+len[i]-2),4]<-rB[(sep[i]+1):(sep[i]+len[i]-1)]

mat<-mat[which(!is.na(mat[,1])),]

【讨论】:

以上是关于R:将二进制文件转换为矩阵的主要内容,如果未能解决你的问题,请参考以下文章

如何将两列“计数”矩阵转换为 R 中的二进制向量? [复制]

SWM格式权重矩阵转换为二进制格式全过程分享

使用大型数据集在 R 中创建二进制矩阵

Python Pandas:将 2,000,000 个 DataFrame 行转换为二进制矩阵 (pd.get_dummies()) 而不会出现内存错误?

计算/翻译R中二进制矩阵/向量中的数字向量

C++如何将一个存有数据的文本文件转换为二进制文件?