Как написать эффективный цикл для доступа к наборам данных внутри 1000 файлов h5 в R [duplicate]

В моем случае возникла ошибка, потому что я дал имя исходного файла вместо имени класса.

Нам нужно предоставить имя класса, содержащее основной метод, интерпретатору.

46
задан Sam 5 July 2013 в 14:53
поделиться

3 ответа

Пакет ncdf4 , интерфейс для netCDF-4, также может использоваться для чтения файлов hdf5 (netCDF-4 совместим с netCDF-3, но он использует hdf5 в качестве уровня хранения ).

В словах разработчика:

  • группа HDF говорит:

NetCDF-4 объединяет модели данных netCDF-3 и HDF5, используя желаемые характеристики каждого из них, используя при этом свои преимущества

Формат netCDF-4 реализует и расширяет модель данных netCDF-3, используя расширенную версию HDF5 в качестве уровня хранения.

На практике ncdf4 предоставляет простой интерфейс, а перенос кода с использованием более старых пакетов hdf5 и ncdf в один пакет ncdf4 сделал наш код меньше ошибок и легче писать (некоторые из моих проб и обходных решений описаны в моем предыдущем ответе ).

37
ответ дан Community 1 September 2018 в 06:27
поделиться

Я использовал пакет rgdal для чтения файлов HDF5. Вам нужно позаботиться о том, чтобы, вероятно, двоичная версия rgdal не поддерживала hdf5. В этом случае вам нужно построить gdal из источника с поддержкой HDF5, прежде чем строить rgdal из источника.

В качестве альтернативы попробуйте преобразовать файлы с hdf5 в netcdf. Как только они находятся в netcdf, вы можете использовать отличный пакет ncdf для доступа к данным. Преобразование, я думаю, может быть сделано с помощью инструмента cdo .

5
ответ дан Paul Hiemstra 1 September 2018 в 06:27
поделиться

Вы также можете использовать h5, пакет, который я недавно опубликовал на CRAN. По сравнению с rhdf5 он имеет следующие функции:

  1. Объектная модель S4 для непосредственного взаимодействия с объектами HDF5, такими как файлы, группы, наборы данных и атрибуты.
  2. Упрощенный синтаксис, реализованный R-подобные подмножества операторов для наборов данных, поддерживающих команды, такие как readdata <- dataset[1:3, 1:3] dataset[1:3, 1:3] <- matrix(1:9, nrow = 3)
  3. Поддерживаемые значения NA для всех типов данных
  4. 200+ Тестовые примеры с охватом кода 80% +.

Чтобы сохранить матрицу, вы можете использовать:

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 на

17
ответ дан user625626 1 September 2018 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: