Чтение множества файлов.h5 одновременно

Я использую библиотеку rhdf5. И я хочу прочитать много файлов одновременно. У меня есть файлы.h5 в папке ввода, то я пытался:

filenames <- list.files("input", pattern="*.h5", full.names=TRUE)
read_h5<- function(file) {h5read(file, "/datasets/data1/data0")}
for (i in 1:length(filenames)) {
   read_h5(filenames[i])
}

Это не показывало никакой ошибки. Просто я выполняю это и ничего не происходит. Я тоже пробовал lapply(filenames,h5read(filenames,name="/datasets/data1/data0"),.GlobalEnv)

но здесь я получаю ошибку: "условие имеет длину> 1, и будет использоваться только первый элемент".

Почему это не работает?

1 ответ

Решение

В случае, если у кого-то возникнет подобная проблема, я поделюсь с вами, как я справляюсь с этой проблемой. К сожалению, мне пришлось немного изменить свою попытку.

Мой скрипт в R выглядит так (test.R):

library(rhdf5)
args <- commandArgs(trailingOnly = TRUE)
filename <- args[1]
output<-args[2]
my_data<-h5read(filename, "/datasets/data1/data0")
write.table(my_data, file=output, row.names=FALSE, col.names=FALSE)

Позже я написал скрипт bash:

#!/bin/bash

for file in input/*.h5; do 
    [ -f "$file" ] || continue
    beg="${file%%.*}";
    Rscript test.R "$file" "$beg".txt
done

И это работает для меня!

Другие вопросы по тегам