我正在编写一个库来处理名为“Data”的S3类,我需要分配子集运算符[.Data
在相关的R档案中,我有:
`[.Data` <- function(x, condition) {
## body of function
}
安装库没有问题,但在交互式R会话中附加它后,找不到函数[.Data
。如果我只是将上面R文件中的代码复制并粘贴到终端中,则该函数将被定义并按预期工作。
此外,如果我将资源R文件中的函数名称从[.Data
更改为标准名称fun
,则可以在将库附加到R会话中时找到该函数。因此,我不认为在安装库时整理文件存在问题。
我还尝试使用更明确的assign
函数而不是<-
,但没有成功。问题似乎仅限于我对该函数的命名,但由于S3约束,我无法在不更改功能的情况下更改函数名称。
答案 0 :(得分:2)
你应该尝试:
methods('[') # will be big list
您可能没有“导出”函数名称。或者您可能需要在包代码中执行此操作:
S3method('[', "Data") # See 1.5.2 Registering S3 methods in "Writing R Extensions"
如果这不是问题,那么请阅读更多关于如何使用UseMethod
创建其他通用函数的内容。