English · PDF 292
ing the function。管道会依次计算每个元素,所以你不能依赖这种行为。
一个会出现问题的地方是 tryCatch(),它让你捕获并处理错误:
tryCatch(stop("!"), error = function(e) "An error") #> [1] "An error" stop("!") %>% tryCatch(error = function(e) "An error") #> Error in eval(expr, envir, enclos): !
具有这种行为的一类函数相当多,包括 base R 中的 try()、suppressMessages() 和 suppressWarnings()。
管道是一个强大的工具,但它并不是你唯一可用的工具,也不能解决所有问题!管道最适合用于重写相当短的线性操作序列。我认为在以下情况下你应该使用其他工具:
tidyverse 中的所有包都会自动使 %>% 可用,所以你通常不需要显式加载 magrittr。不过,还有