我喜欢构建一个CRAN一致的包,但是必须从外包中覆盖一个函数。可能我必须在不同的命名空间下复制整个包函数?有没有办法以CRAN的方式做到这一点?
本地以下作品,但当然不适用于有效的CRAN套件
HtmlHelper oHtmlHelper = new HtmlHelper(oViewContext, oViewDataContainer);
oHtmlHelper.RenderAction(sController, sAction);
我非常感谢一个例子。 (xyz的维护者无法改变它,因为我的关注是一个非常特殊的情况。)
THX 克里斯托夫
答案 0 :(得分:1)
我的感觉是你在这里至少有两个可能的选择。这首先是我认为你需要的,但我包括两者的完整性。
nb :如果您可以提供您希望扩展的软件包和功能,那将非常有用,因为我必须使其略显通用。我已经引用了原始的StackOverflow帖子,这些帖子在这种情况下帮助了我。在进一步/深入阅读方面,我的建议是:
在这种情况下,我的感觉是指导您查看Writing R Extensions手册的1.5.6
部分。
为什么呢?好吧,根据你的描述,我的意思是从包中导入函数,然后编写你的扩展函数。
您可以通过使用指令
显式导入类和方法来完成此操作importClassesFrom(package, ...)
importMethodsFrom(package, ...)
分别用方法列出类和函数。假设我们有两个小包A和B,B使用A.然后他们可以有NAMESPACE文件
export(f1, ng1)
exportMethods("[")
exportClasses(c1)
和
importFrom(A, ng1)
importClassesFrom(A, c1)
importMethodsFrom(A, f1)
export(f4, f5)
exportMethods(f6, "[")
exportClasses(c1, c2)
分别
请注意,importMethodsFrom
还将导入这些方法在命名空间中定义的任何泛型。如果您导出相应的泛型可用的S4方法,这一点很重要。例如,您可能需要从图形中导入绘图以使可见的函数转换为其隐式泛型。但是更好的做法是使用stats4导出的泛型,因为这样可以使多个包明确地设置这些泛型的方法。
这是以前帮助我的StackOverflow问题和答案:
请参阅:Overwrite method to extend it, using the original implementation
我希望以上有所帮助。