Когда я выполняю следующее, мой набор данных «предикторов» заполняется правильно:
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 также показывает неправильные значения для набора данных «предикторы».
Что здесь не так?
t
? - person blmoore   schedule 21.08.2013t
предназначен для транспонирования, я хотел увидеть результат таким, каким я его вижу в hdfview, способ сделать это - выполнить транспонированиеt(...)
Я знаю, что это звучит безумно, но проблема именно в этом: я что-то пишу и получаю что-то полностью разные записанные в файл. - person SkyWalker   schedule 21.08.2013Please note, that arrays appear as transposed matrices when opening it with a C-program (h5dump or HDFView). This is due to the fact the fastest changing dimension on C is the last one, but on R it is the first one (as in Fortran).
- person blmoore   schedule 21.08.2013