gpt4 book ai didi

r - 在 R 中使用 parLapply(并行包)进行 TryCatch

转载 作者:行者123 更新时间:2023-12-04 09:14:52 25 4
gpt4 key购买 nike

我正在尝试在一个非常大的数据集上运行一些东西。基本上,我想遍历文件夹中的所有文件并在其上运行 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 文件完整路径的字符向量文件调用 parLapply:
 dat<- parLapply(cl,files,readJson)

当它到达一个没有正确结束的文件并且不会通过跳过有问题的文件来创建列表“dat”时会产生错误。这就是 readJson 函数应该减轻的。

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

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

最佳答案

在您的 error处理函数 cond是一个错误条件。 message(cond)发出这种情况的信号,它会被工作人员捕获并作为错误传输给主设备。要么删除 message调用或用类似的东西替换它们
message(conditionMessage(cond))
但是,您不会在 master 上看到任何内容,因此最好将其删除。

关于r - 在 R 中使用 parLapply(并行包)进行 TryCatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com