R 的 S3 OO 系统以泛型函数为中心,泛型函数调用方法取决于调用泛型函数的对象的类。关键是通用函数调用适当的方法,而不是在类中定义方法的其他 OO 编程语言。
例如,该mean
函数是通用函数。
isGeneric("mean")
methods(mean)
这将打印
TRUE
[1] mean,ANY-method mean.Date mean.default mean.difftime
[5] mean.IDate* mean,Matrix-method mean.POSIXct mean.POSIXlt
[9] mean,sparseMatrix-method mean,sparseVector-method
see '?methods' for accessing help and source code
我正在探索 R 并找到了该as
功能。我对 R 说函数不是通用的,但它仍然有方法这一事实感到困惑。
isGeneric("as")
methods(as)
TRUE
[1] as.AAbin as.AAbin.character
[3] as.alignment as.allPerms
[5] as.array as.array.default
[7] as.binary as.bitsplits
[9] as.bitsplits.prop.part as.call
...
最后有一个警告说这as
不是通用的。
Warning message:
In .S3methods(generic.function, class, parent.frame()) :
function 'as' appears not to be S3 generic; found functions that look like S3 methods
有人可以解释一下这个as
功能是什么以及如何连接as.list
等as.data.frame
吗?R 说这as.list
是一个泛型(我很想对 R 中的不一致感到有点生气,因为我希望成为泛型函数的对象as.list
的方法)。请帮忙。list
as