R 使现有函数成为泛型函数
我想使现有函数成为泛型函数。因此,默认情况应该与以前相同,但我想为自己的数据结构添加一个情况 于是我苏醒过来。对于像R 使现有函数成为泛型函数,r,R,我想使现有函数成为泛型函数。因此,默认情况应该与以前相同,但我想为自己的数据结构添加一个情况 于是我苏醒过来。对于像data.frame这样的类,它的工作原理与预期类似,但对于我自己的类(类属性集),它只调用默认函数: >setGeneric('dim') >dim.data.frame df dim(df) 42 如果我用自己的类交换data.frame,它将不起作用,只调用默认的dim函数。我无法重现您的问题。对我来说: dim.test <- function(x) 23 x &l
data.frame
这样的类,它的工作原理与预期类似,但对于我自己的类(类属性集),它只调用默认函数:
>setGeneric('dim')
>dim.data.frame df dim(df)
42
如果我用自己的类交换
data.frame
,它将不起作用,只调用默认的dim
函数。我无法重现您的问题。对我来说:
dim.test <- function(x) 23
x <- 2
class(x) <- "test"
dim(x)
dim.test以下是Rstudio团队如何用您要求的条件替换现有函数,使其成为通用函数:现有函数成为默认函数
我会这样做:
dim <- function(x) UseMethod("dim")
dim.default <- function(x) base::dim(x)
dim.test <- function(x) 42
dim(mtcars)
#> [1] 32 11
mydata <- mtcars
class(mydata) <- "test"
dim(mydata)
#> [1] 42
dim可以显示未按预期工作的代码?请提供一个示例,说明您的类是如何不同的。如果我们无法重现您所经历的错误,则很难看出可能有什么问题。感谢您的解决方案。不幸的是,如果调用例如nrow
或ncol
,这将不起作用。这里使用的是基本dim,而不是我自己的数据类型的函数。那么为什么不用同样的方法覆盖函数nrow和ncol呢?我认为,如果您提供更多关于您的问题和目标的详细信息,我们可以提出一个解决方案。实际上,如果您尝试运行nrow(mydata),它将返回42,而ncol(mydata)将返回NA,正如所预期的那样。也许我错过了一些你想要实现的东西