2017-08-07 72 views
0

我正在使用rhdf5库。我想一次读取多个文件。 我在文件夹中输入我的.h5文件,然后我特林:立即读取许多.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,只有第一个元素将被使用”。

为什么它不起作用?

回答

0

如果有人会遇到类似的问题,我会与您分享我是如何处理这个问题的。不幸的是,我不得不改变一点点我的尝试。

我的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 

这对我的作品!