小编use*_*393的帖子

在R中使用parLapply(并行包)的TryCatch

我试图在一个非常大的数据集上运行一些东西.基本上,我想遍历文件夹中的所有文件并在其上运行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)   
}
Run Code Online (Sandbox Code Playgroud)

然后我在包含JSON文件的完整路径的字符向量文件上调用parLapply :

 dat<- parLapply(cl,files,readJson)
Run Code Online (Sandbox Code Playgroud)

当它到达一个未正确结束的文件时会产生错误,并且不会通过跳过有问题的文件来创建列表'dat'.这是readJson函数应该缓解的内容.

当我使用常规lapply,但它工作得很好.它会生成错误,但是,它仍然会跳过错误的文件来创建列表.

关于如何使用parLappy并行处理异常处理的任何想法,以便它会跳过有问题的文件并生成列表?

parallel-processing r

6
推荐指数
1
解决办法
947
查看次数

标签 统计

parallel-processing ×1

r ×1