В моем случае возникла ошибка, потому что я дал имя исходного файла вместо имени класса.
Нам нужно предоставить имя класса, содержащее основной метод, интерпретатору.
Пакет ncdf4
, интерфейс для netCDF-4, также может использоваться для чтения файлов hdf5 (netCDF-4 совместим с netCDF-3, но он использует hdf5 в качестве уровня хранения ).
В словах разработчика:
NetCDF-4 объединяет модели данных netCDF-3 и HDF5, используя желаемые характеристики каждого из них, используя при этом свои преимущества
blockquote>
- Unidata говорит :
Формат netCDF-4 реализует и расширяет модель данных netCDF-3, используя расширенную версию HDF5 в качестве уровня хранения.
blockquote>На практике
ncdf4
предоставляет простой интерфейс, а перенос кода с использованием более старых пакетовhdf5
иncdf
в один пакетncdf4
сделал наш код меньше ошибок и легче писать (некоторые из моих проб и обходных решений описаны в моем предыдущем ответе ).
Я использовал пакет rgdal
для чтения файлов HDF5. Вам нужно позаботиться о том, чтобы, вероятно, двоичная версия rgdal
не поддерживала hdf5
. В этом случае вам нужно построить gdal
из источника с поддержкой HDF5, прежде чем строить rgdal
из источника.
В качестве альтернативы попробуйте преобразовать файлы с hdf5
в netcdf
. Как только они находятся в netcdf, вы можете использовать отличный пакет ncdf
для доступа к данным. Преобразование, я думаю, может быть сделано с помощью инструмента cdo
.
Вы также можете использовать h5, пакет, который я недавно опубликовал на CRAN. По сравнению с rhdf5
он имеет следующие функции:
readdata <- dataset[1:3, 1:3]
dataset[1:3, 1:3] <- matrix(1:9, nrow = 3)
Чтобы сохранить матрицу, вы можете использовать:
library(h5)
testmat <- matrix(rnorm(120), ncol = 3)
# Create HDF5 File
file <- h5file("test.h5")
# Save matrix to file in group 'testgroup' and datasetname 'testmat'
file["testgroup", "testmat"] <- testmat
# Close file
h5close(file)
... и прочитать всю матрицу обратно в R:
file <- h5file("test.h5")
testmat_in <- file["testgroup", "testmat"][]
h5close(file)
См. также h5 на