在R中,如何对来自另一个包的类设置泛型方法?
我在自己的包中使用在R中,如何对来自另一个包的类设置泛型方法?,r,generics,methods,packages,R,Generics,Methods,Packages,我在自己的包中使用zoo类。我想设置一个类型为zoo的泛型方法: setMethod( "doWork", signature = c("zoo"), definition = function(x) { # Do work... }) 但是,这给了我一个错误: 签名为“zoo”的“dowork”的方法中:类“zoo”没有定义 我应该如何设置签名,使其引用zoo::zoo?这是因为zoo包中的zoo类不是正式的S4类。为了与S4方法一起使
zoo
类。我想设置一个类型为zoo
的泛型方法:
setMethod(
"doWork",
signature = c("zoo"),
definition = function(x) {
# Do work...
})
但是,这给了我一个错误:
签名为“zoo”的“dowork”的方法中:类“zoo”没有定义
我应该如何设置签名,使其引用
zoo::zoo
?这是因为zoo
包中的zoo类不是正式的S4类。为了与S4方法一起使用,您可以使用setOldClass
函数,该函数将S3类设置为正式定义的类。一旦你这样做了,你应该能够使用你想要的任何方法类。使用以下文件启动一个新包(我称之为“test”)(请注意roxygen2的使用)
方法:R
#' @import zoo
setOldClass("zoo")
setGeneric("doWork", function(x){
standardGeneric("doWork")
})
#' @export
setMethod(
"doWork",
signature = c("zoo"),
definition = function(x) {
print("IT WORKS!!!")
}
)
测试功能
library(test) # if not already loaded
library(zoo)
x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1
x <- zoo(rnorm(5), x.Date)
doWork(x)
[1] "IT WORKS!!!"
库(测试)#如果尚未加载
图书馆(动物园)
x、 日期