【发布时间】:2017-08-19 16:47:09
【问题描述】:
我正在尝试在一个非常大的数据集上运行某些东西。基本上,我想遍历文件夹中的所有文件并在其上运行函数 fromJSON。但是,我希望它跳过产生错误的文件。但是,我使用 tryCatch 构建了一个函数,该函数仅在我使用函数 lappy 而不是 parLapply 时有效。
这是我的异常处理函数的代码:
readJson <- function (file) {
require(jsonlite)
dat <- tryCatch(
{
fromJSON(file, flatten=TRUE)
},
error = function(cond) {
message(cond)
return(NA)
},
warning = function(cond) {
message(cond)
return(NULL)
}
)
return(dat)
}
然后我在包含 JSON 文件的完整路径的字符向量 files 上调用 parLapply:
dat<- parLapply(cl,files,readJson)
当它到达一个没有正确结束的文件并且没有通过跳过有问题的文件来创建列表“dat”时会产生错误。这是 readJson 函数应该减轻的。
当我使用常规 lapply 时,它工作得非常好。它会生成错误,但是,它仍然会通过跳过错误文件来创建列表。
关于如何使用 parLappy 并行处理异常以跳过有问题的文件并生成列表的任何想法?
【问题讨论】:
标签: r parallel-processing