bounty将在3天后过期。回答此问题可获得+50声望奖励。LDT正在寻找标准答案。
我在一个文件夹中有三个文件,名称如下:
第一个
当我使用TidyMultiqc package打开文件时,文件中现有的NA值可能会导致以下错误:
files <- dir(path,pattern = "*.json") #locate files
files %>%
map(~ load_multiqc(file.path(path, .))) #parse them
## the error
Error in parse_con(txt, bigint_as_char) :
lexical error: invalid char in json text.
"mapped_failed_pct": NaN, "paired in
(right here) ------^
我想创建一个函数来处理此错误。
我希望每次弹出此错误时,都能够在文件夹的所有文件中应用此sed函数。
system(paste("gsed -i 's/NaN/null/g'",paste0(path,"*.json")))
有什么想法吗
2条答案
按热度按时间kwvwclae1#
您可以使用此 Package 器:
vjhs03f72#
在工作管道中处理类似错误的一个好方法是使用restart和
withCallingHandlers
和withRestarts
。你建立了条件处理程序和恢复协议(重启),然后你可以选择使用什么协议以及使用的顺序。调用处理程序可以比普通的try-catch更好地控制错误条件。
在这个例子中,我写了两个处理程序:removeNaNs(在文件夹级别工作)和skipFile(在文件级别工作),如果第一个失败,则执行第二个(简单地跳过文件)。
我认为在您的情况下,您可以在任何情况下简单地运行
sed
,不过,我希望这个答案满足您对规范方法的寻找灵感和额外讲座:Beyond Exception Handling: Conditions and Restarts