This question建议使用methods(class=class(obj))
来提取对象可用的方法列表。
如果在length(class(obj))>1
的对象上使用,则会导致许多警告,例如
set.seed(101)
a <- matrix(rnorm(20), nrow = 10)
b <- a + rnorm(length(a))
obj <- lm(b ~ a)
将class(obj)
作为c("lm","mlm")
; methods(class=class(obj))
给出了
(多次)&lt; grep中的警告(pattern,all.names,value = TRUE): 参数'pattern'的长度为&gt; 1,仅使用第一个元素 gsub中的警告(名称,“”,S3reg): 参数'pattern'的长度为&gt; 1,仅使用第一个元素 sub(paste0(“\。”,class,“$”),“”,row.names(info))中的警告: 参数'pattern'的长度为&gt; 1,只使用第一个元素
然后是结果。
似乎(?)将methods(class=...)
应用于class(obj)
的 last 元素会起作用,但我对其替代方案或讨论感兴趣(或者不是)正确...
为了澄清,我希望返回的值是一个(最好是唯一的)字符向量,这样我就可以使用类似if ("foo" %in% allmethods(obj))
的东西来测试对象的指定方法的可用性...... / p>
答案 0 :(得分:2)
这是你正在寻找的吗?
sapply(class(obj), function(x) methods(class = x))
请注意,下面的代码会出错,因为参数generic.function
变为mlm
。它必须是如上所述的class
参数。
sapply(class(obj), methods)
Error in .S3methods(generic.function, class, parent.frame()) :
no function 'mlm' is visible