Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R不会删除我用h5软件包打开的文件_R_Hadoop_Hdf5 - Fatal编程技术网

R不会删除我用h5软件包打开的文件

R不会删除我用h5软件包打开的文件,r,hadoop,hdf5,R,Hadoop,Hdf5,我有一个文件夹完整的压缩hdf5文件。我想创建一个脚本,在每个文件中循环,解压缩,读取hdf5文件的某些元素,然后删除解压缩后的文件 我遇到了一些问题,因为R不会删除hdfs文件,导致权限错误。我已经使用适当的命令关闭了对hdf5文件的引用,该命令返回TRUE,但是只有在重新启动rsession之后才能删除该文件 举个例子, library(h5) # create an example hdf5 file file <- h5file("test.hdf5", 'w') # crea

我有一个文件夹完整的压缩hdf5文件。我想创建一个脚本,在每个文件中循环,解压缩,读取hdf5文件的某些元素,然后删除解压缩后的文件

我遇到了一些问题,因为R不会删除hdfs文件,导致权限错误。我已经使用适当的命令关闭了对hdf5文件的引用,该命令返回TRUE,但是只有在重新启动rsession之后才能删除该文件

举个例子,

library(h5)

# create an example hdf5 file
file <- h5file("test.hdf5", 'w')

# create some example data.
testvec <- rnorm(10)
testmat <- matrix(1:9, nrow = 3)
row.names(testmat) <- 1:3
colnames(testmat) <- c("A", "BE", "BU")
letters1 <- paste(LETTERS[runif(45, min = 1, max = length(LETTERS))])
letters2 <- paste(LETTERS[runif(45, min = 1, max = length(LETTERS))])
testarray <- array(paste0(letters1, letters2), c(3, 3, 5))

# write the data to hdf5 file
file["test/testvec"] <- testvec
file["test/testmat"] <- testmat
file["test/testarray"] <- testarray

# close the file reference
closed <- h5close(file)
cat(sprintf('Closed the example file = %i\n', closed))

openedFromDisk <- h5file("test.hdf5")
thedata <- readDataSet(openedFromDisk["test/testarray"])
closed <- h5close(openedFromDisk)
cat(sprintf('Closed the loaded file = %i\n', closed))

#attempt to delete the file
removed <- file.remove("test.hdf5")
cat(sprintf('Deleted the loaded file = %i\n', removed))
库(h5)
#创建一个示例hdf5文件

文件罪犯很可能是h5的内部C代码。该软件包不使用R的标准连接机制,因此从R内部操纵它是完全不可能的。我会向h5的创建者报告这一点,因为这看起来、感觉和闻起来都像一个bug。我会给创建者发送一封电子邮件,并在github上提交一份bug报告。在两次发布之间,我发现它使用了一个不同的包,但我猜是相同的C代码,这支持您的假设。如果它有任何帮助:终止R会话有效地删除了与文件的绑定,因此可以删除它。我现在会使用bash脚本来自动完成这项工作,但这显然不是最优的。