首页 > 解决方案 > R 4.0.1 上函数和 S4 泛型的错误处理不一致

问题描述

在 R 4.0.1 之前,函数和 S4 泛型处理错误的方式相同:

> nrow(stop())
Error in nrow(stop()) : 
> setGeneric("nrow")
[1] "nrow"
> nrow(stop())
Error in nrow(stop()) : 

在 R 4.0.1 中,我现在得到:

# base::nrow
> nrow(stop())
Error in nrow(stop()) : 
# Convert nrow to S4 generic
> setGeneric("nrow")
[1] "nrow"
> nrow(stop())
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'nrow': 

nrow在这种情况下,似乎不知道如何处理该错误。

以前,统一性意味着 S4 可以用来代替 Bioconductor 软件包(如 BiocGenerics)似乎利用的基本功能。这在 R 的最新开发版本 (2020-06-09 r78662) 上仍然存在。这种新的不一致是 R 4.0.1 的预期行为吗?

此外,R 4.0.1 行为对闪亮的应用程序有影响,如果在R < 4.0.1 S4 错误不会遇到的情况req(nrow(my_reactive()))下,新的 S4 错误将终止/崩溃应用程序。base::nrow

标签: rerror-handlingshinybioconductors4

解决方案


推荐阅读