如何解决R 中的 doParallel 无法打开 H5File 对象
我正在尝试使用 doParallel 运行 for 循环,但它没有处理我的 .h5 文件。
该代码适用于 ILogger
... foreach
但是当我与 %do%
并行时,它抛出了一个错误。
有谁知道这可能是什么原因造成的?
%dopar%
files <- list.files("E:/Protein Data/OneDrive_1_6-18-2021/sample/",full.names = TRUE,pattern = ".h5")
vector1 <- numeric()
vector2 <- numeric()
system.time({
foreach (i = 1:7) %do% {
data_i <- H5File$new(files[i],'r+')
object_i <- data_i[["d1"]]
object_i <- readDataSet(object_i)
foreach (j = 1:7) %do% {
data_j <- H5File$new(files[j],'r+')
object_j <- data_j[["d1"]]
object_j <- readDataSet(object_j)
vector1[j] <- come calculation
vector2[j] <- some calculation
}
write.table(vector1,file = paste0("folder1/",paste0(i,"_vec1.txt")),row.names=FALSE,col.names=FALSE)
write.table(vector2,file = paste0("folder2/","_vec2.txt")),col.names=FALSE)
}
})
这是我得到的错误:
{ 中的错误:任务 1 失败 - “找不到对象‘H5File’”
解决方法
如果循环体使用包中的名称,则这些名称需要声明为 in the .packages
argument to foreach
,或者您需要通过 ::
明确限定循环体中的名称使用:
foreach (i = 1:7,.packages = 'hdf5r') %dopar% {
data_i <- H5File$new(files[i],'r+')
…
或者:
foreach (i = 1:7) %dopar% {
data_i <- hdf5r::H5File$new(files[i],'r+')
…
对于这些中哪个更好,没有既定的共识。就我个人而言,我更喜欢第二种变体。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。