English · PDF 355
当你使用 map 函数重复执行许多操作时,其中某个操作失败的可能性会大大增加。一旦发生这种情况,你会收到一条错误消息,并且没有任何输出。这很令人恼火:为什么一次失败会阻止你访问所有其他成功的结果?如何确保一个坏苹果不会毁掉整桶苹果?
在本节中,你将学习如何用一个新函数来处理这种情况:safely()。safely() 是一个副词:它接受一个函数(动词)并返回一个修改后的版本。在这里,修改后的函数永远不会抛出错误。相反,它总是返回一个包含两个元素的列表:
result
原始结果。如果发生了错误,这将是 NULL。
error
一个错误对象。如果操作成功,这将是 NULL。
(你可能熟悉 base R 中的 try() 函数。它与此类似,但由于它有时返回原始结果、有时返回错误对象,所以使用起来更困难。)