gpt4 book ai didi

r - 用于在 R 中编写(通用)函数的参数和类

转载 作者:行者123 更新时间:2023-12-04 17:39:12 24 4
gpt4 key购买 nike

我想用几个非常简单的函数制作一个小的 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 代码(不仅仅是这个虚构的例子)。

最佳答案

你在这里陷入了正确的困惑......

首先,您的构造函数可能不应该是泛型/方法。就像是:

makefclass = function(a,b,c){
l = list(a=a,b=b,c=c)
class(l)="fclass"
return(l)
}

然后你可以写print.fclass:
print.fclass=function(x,...){
cat("I'm an fclass!")
cat("my abc is ",x$a,x$b,x$c,"\n")
}

然后你做:
> f=makefclass(1,2,3)
> f
I'm an fclass!my abc is 1 2 2

希望有帮助...

关于r - 用于在 R 中编写(通用)函数的参数和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com