r - 失败时如何打印函数的参数?

标签 r purrr

当函数 sum() 失败时,我正在尝试使用 possibly() 打印参数 x 作为消息。

library(purrr)
t <- function(x) {
  p <- possibly(sum, otherwise = message(x))
  p(x)
}

但是,我不希望下面的代码检索任何消息,因为 sum() 不会失败:

> t(1)
1
[1] 1

相反,下面的脚本按预期工作:sum() 失败,因此 t() 打印消息 'a'

> t('a')
a
NULL

最佳答案

如另一个答案所述,可能只是做了一些与您想要的完全不同的事情。

你想要的是 tryCatch(base R 的一部分):

t <- function(x) {
  tryCatch(sum(x), error = function (.) message(x))
}
t(1)
# [1] 1
t('a')
# a

关于r - 失败时如何打印函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70186719/

相关文章:

r - 在抓取html页面之前是否需要在rvest中使用read_html?

r - 在 r 中收集多列数据

r - 子集 data.table 仅保留大于应用于所有列的特定值的元素

R (purrr) 将命名列表的列表展平以列出并保留名称

r - sys.sleep 使用可能来自 purrr 包的函数

r - 如何安全地使用coxph和子集或权重?

r - 对列表中数据框中的每个嵌套数据框应用函数

r - 两个简单特征 {sf} 上的空间连接超过 1 百万。尽快输入

r - rvest::html_text 和 RSelenium::getPageSource 有什么区别?

r - as_tibble 控制扁平化程度