【发布时间】:2012-01-15 20:11:56
【问题描述】:
我想用几个非常简单的函数制作一个小的 R 包。我使用的文献是“创建 R 包:教程”和“编写 R 扩展”。虽然我试过了,但我并不真正理解泛型函数和方法的概念以及如何处理不同函数内的参数。
这是我的代码的一个小例子:
#Make generic function
f <- function(x,...) UseMethod("newmethod")
#Default method
f.default <- function(a,b=5,c=3,...){
out <- a+b+c
class(out) <- "fclass"
}
# Print method
print.f <- function(x,...){
cat("Result:")
print(x)
}
# Summary method
summary.f <- function(object,...){
res <- object
class(res) <- "fsummary"
print(res)
}
# Plot method
plot.f <-function(x,p=0.3,...){}
我有一个名为 f 的函数,默认为 f.default。实际上我的函数需要几个参数(没有一个被定义为 x),那么我必须如何制作我的通用函数? print 方法应该简单地打印 f.default 的输出(在这种简单的情况下类似于摘要输出)。 plot.f 方法使用 f.default 的输出和一个附加参数(强制性)。如何正确编写这些函数?通常的方法使用“object”和“x”之类的参数......但正如我所说,我的函数中不需要任何变量 x......我有点困惑......也许有人可以帮忙。
如果有人愿意帮助我解决这个问题,我也可以发送“真实”的 R 代码(不仅仅是这个虚构的例子)。
【问题讨论】:
-
方法必须与泛型一致。如果您的泛型以参数
x开头,那么方法也必须如此。
标签: r function generics methods