首页 > 解决方案 > S3 通用方法在包中不起作用

问题描述

我有一个包,其中有几个通用方法。它们都是 S3 泛型,具有您在其中看到的典型结构:

func_one <- function(x, ...) { UseMethod("func_one") } 
func_one.data.frame(function(x,...) { dim(x) } 
func_one.matrix(function(x, ...) {dim(x) } 

在我的 NAMESPACE 文件中,我尝试仅导出顶部函数(func_one),但是当我在 data.frame 或矩阵上运行 func_one 时,它​​会出错。然后我继续在 NAMESPACE 中添加了 func_one.data.frame 和 func_one.matrix,但这仍然没有做任何事情。

需要明确的是,这些通用方法会在 R 中找到,但不是作为包。任何帮助都会很棒。:)

这是命名空间文件:

S3method(func_one,data.frame)
S3method(func_one,matrix)
S3method(func_one,tbl_df)
export(func_one)

这是实际函数文件(func.R)的示例

 #' @export
    func_one <- function(data, ...) {
      UseMethod("func_one")
    }

 #' @export
        func_one.data.frame <- function(data, ...) {
            dim(x) 
        }

 #' @export
        func_one.matrix <- function(data, ...) {
            dim(x) 
        }

然后在 R 中安装 R 包并尝试使用它后,我收到 UseMethod 错误。

标签: r

解决方案


推荐阅读