r - 如何测试对象是否具有特定方法?

标签 r oop

如果函数接收任意对象 x 作为参数,测试 x 是否支持某些方法 foo 的最佳方法是什么?

(我认为,作为最后的手段,该函数总是可以尝试使用合适的处理程序在 tryCatch 中评估 foo(x),但我发现,至少在某些情况下,即使 x 不支持 foofoo(x) 也不会产生错误;相反,它只会返回NULL。因此,不能依赖捕获异常作为对 xfoo 的支持的适当测试。)

我想这个问题的答案将取决于 x 的“对象风格”(S3S4 或其他) .请在您的回答中考虑所有这些可能性。

最佳答案

有几种方法可以解决这个问题。

通过以下方式找到可用的方法:

methods(class = class(x))

测试 x 的类是否存在 foo 方法:

"foo" %in% methods(class = class(x))

如果您的方法不是由包导出的(并且只能通过 package:::foo.bar(x) 访问,其中 bar 的类x), 它们不会在上面的示例中显示。


另见 In R, how to find out which method is dispatched for a particular function call?

关于r - 如何测试对象是否具有特定方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41762996/

相关文章:

r - 在 rmarkdown/knitr 中使用 .Last.value

r - R 中的替换函数是什么?

oop - 将 RInside 的 'R' 实例作为类/方法之间的参数传递

php - 从命名空间中的变量名实例化一个新类

java - 如何跟踪 Java 应用程序中的所有组件?

c# - 无法在静态方法中使用实例变量

r - Plotly with R ggplot 隐私

r - 使用数值条件对一系列列进行编码

r - 拆分 data.frame 行并打乱其顺序

python - 如何恰好调用每个父类的构造函数一次?