2013-08-21 3 views
4

Когда я выполняю следующие мои «предсказателей» набор данных заполняется корректно:R hdf5 dataset написан некорректно?

library(rhdf5) 
library(forecast) 
library(sltl) 
library(tseries) 

fid <- H5Fcreate(output_file) 
## TODO: compute the order p 
p <- 4 
# write predictors 
h5createDataset(output_file, dataset="predictors", c(p, length(tsstl.remainder) - (p - 1)), storage.mode='double') 
predictors <- as.matrix(tsstl.remainder) 
for (i in 1:(p - 1)) {  
    predictors <- as.matrix(cbind(predictors, Lag(as.matrix(tsstl.remainder), i))) 
} 
predictors <- as.matrix(predictors[-1:-(p-1),]) 
head(predictors) 
h5write(predictors, output_file, name="predictors") 
H5Fclose(fid) 

Сформированный (правильный) выход для head(predictors) является:

  [,1]  [,2]  [,3]  [,4] 
[1,] 0.3089645 6.7722063 5.1895389 5.2323261 
[2,] 8.7607228 0.3089645 6.7722063 5.1895389 
[3,] -0.9411553 8.7607228 0.3089645 6.7722063 
[4,] -14.1390243 -0.9411553 8.7607228 0.3089645 
[5,] -26.6605296 -14.1390243 -0.9411553 8.7607228 
[6,] -8.1293076 -26.6605296 -14.1390243 -0.9411553 

Однако, когда я прочитал его результаты не являются исправить:

tsmatrix <- t(as.matrix(h5read(output_file, "predictors"))) 
head(tsmatrix) 

Некорректно выходы:

  [,1]  [,2]  [,3]  [,4] 
[1,] 0.3089645 8.760723 -0.9411553 -14.13902 
[2,] -26.6605296 -8.129308 -9.8687675 31.52086 
[3,] 54.2703126 43.902489 31.8164836 43.87957 
[4,] 22.1260636 36.733055 54.7064107 56.35158 
[5,] 36.3919851 25.193068 48.2244464 57.12196 
[6,] 48.0585673 72.402673 68.3265518 80.18960 

Как получилось, что я пишу, не соответствует тому, что я верну? Я дважды проверял, и просмотрщик HDF5 hdfview также показывает это неправильные значения для набора данных «предсказатели».

Что здесь не так?

+0

Укажите, пожалуйста, все пакеты, которые вы используете – Dason

+1

Попробуйте это без 't'? – blmoore

+0

предоставленные библиотеки, с t - это тот же результат, который я получаю в hdfview, что очень странно. –

ответ

4

От rhdf5 docs:

Пожалуйста, обратите внимание, что массивы отображаются как транспонированные матрицы при открытии с C-программы (h5dump или HDFView). Это связано с тем, что последний самый быстрый изменяющийся размер на C является последним, но на R это первый (как в Fortran).

Смежные вопросы