2016-04-20 4 views
1

R: Я загрузил большой двоичный файл (числовой, один массив) в R с помощью readBin. Мои данные состоят из значений, больше чем 10000 и значение меньше, чем 10000, какR: Преобразование двоичного файла в матрицу

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 

Разделение должно быть между последним небольшим значением и большим значением, как указано выше.

+0

сентября <-which(rB> 12000) # Время шаги LEN <-diff (сентябрь, 1) # запаздывает Len <-c (длина, (длина (гв) -tail (SEP, 1))) # последнее значение коврик <-matrix (NA, размер/8,3) # матрица для (i in 1: length (sep)) # заполнить матрицу {mat [sep [i] :(sep [i] + len [i ]), 1] <- i коврик [sep [i] :(sep [i] + len [i] -1), 2] <- (1: len [i]) коврик [sep [i]: (sep [i] + len [i] -1), 3] <- rB [sep [i]: (sep [i] + len [i] -1)] } –

ответ

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])),] 
Смежные вопросы