2

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

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

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

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

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

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

4

1 回答 1

2

你应该试试:

methods('[')  # will be big list

您可能没有“导出”函数名称。或者你可能需要在你的包代码中执行这个:

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

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

于 2013-12-18T20:16:30.643 回答