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 中的二进制向量? [复制]
Python Pandas:将 2,000,000 个 DataFrame 行转换为二进制矩阵 (pd.get_dummies()) 而不会出现内存错误?