r - 分配 S3 子集运算符

标签 r r-s3

我正在编写一个库来使用名为“Data”的 S3 类,我需要分配子集运算符 [.Data

在相关的 R 文件中,我有:

`[.Data` <- function(x, condition) {
  ## body of function
}

安装该库没有问题,但将其附加到交互式 R session 中时,函数 [.Data找不到。如果我只是将上述 R 文件中的代码复制并粘贴到终端中,该函数就会被定义并按预期工作。

此外,如果我将资源 R 文件中的函数名称从 [.Data 更改为标准名称如 fun ,可以在将库附加到 R session 中时找到该函数。因此,我认为安装库时整理文件没有问题。

我还尝试使用更明确的 assign函数而不是 <-没有成功。问题似乎仅限于我对函数的命名,但由于 S3 限制,我无法在不更改功能的情况下更改函数的名称。

最佳答案

你应该尝试:

methods('[')  # will be big list

您可能没有“导出”函数名称。或者您可能需要在包代码中执行此操作:

S3method('[', "Data")  # See 1.5.2 Registering S3 methods in "Writing R Extensions"

如果这不是问题,请阅读更多有关如何使用 UseMethod 创建其他通用函数的信息。

关于r - 分配 S3 子集运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666657/

相关文章:

r - 如何使用 geom_polygon 的分面来生成 map 网格

r - 获取 S3 打印方法的对象名称失败

r - 检查 S3 通用/方法一致性......警告

r - 在非零列中查找百分比

r - 在 Mac 上包含 cairo R

r - 如何在绘图中添加对角线?

R 日期格式,如何将日期格式更改为 2011 年 6 月 1 日

R:在全局环境中从包 ‘split’ 为 ‘base’ 创建通用函数

oop - R中的矩阵丢失类属性

r - 如何在不使用 Depends 或 library() 的情况下使用另一个包中的 S3 方法,该包在其命名空间中使用 export 而不是 S3method