分配S3子集运算符

时间:2013-12-18 19:21:38

标签: r r-s3

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

在相关的R档案中,我有:

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

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

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

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

1 个答案:

答案 0 :(得分:2)

你应该尝试:

methods('[')  # will be big list

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

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

如果这不是问题,那么请阅读更多关于如何使用UseMethod创建其他通用函数的内容。