2012-04-02 62 views
1

我正在使用一个软件包,我想在其主要功能中添加一个附加选项,并相应地更改主功能中的内容。除此之外,我想现在就使用这个软件包。如何继承R中的包或类?

这样做的最好方法是什么?任何参考将不胜感激。

+0

这似乎不可接受的模糊请求。你应该提出一些细节。 – 2012-04-02 14:13:53

+0

@DWin嗯,我不确定具体如何帮助这里。我想知道如何在不重写整个包的情况下更改包的主要功能。 – 2012-04-02 14:23:47

+0

正如我写的,我解释你的问题意味着你自己写了这个包。显然情况并非如此。 – 2012-04-02 15:17:58

回答

2

如果你认为是由世界其他国家需要你的变化,太:

  1. 联系维护者(packageDescription ("pkgName") $ Maintainer
  2. 解释你的变化和
  3. 附加的代码和文档补丁来电子邮件?

如果只有你自己所需要的变革/要围绕本地尝试:

  • ? fix
  • 也看到? assignInNamespace
  • 获取源(在CRAN的包应该是开放源码软件,但更好阅读许可证),让您的chagne &在本地安装该软件包。

  • ,如果你需要插入一些代码(如额外的输出语句):? trace

+0

感谢您的回答。但我不认为你明白我的问题。我不是在问发布更改后的代码的过程。我想改变现有的软件包并在此之前试用。 – 2012-04-02 14:25:15

+0

@david,看修改后的答案。 – cbeleites 2012-04-02 14:28:38

0

这就是我所做的。

  1. 创建从给定包的主函数复制的另一个函数。
  2. 根据需要更改功能。
  3. 如果您需要使用包(或类)的内部函数,请在函数名称前使用<package name>:::
  4. 使你的结果继承自你想要的类。

例如,class(results) <- c("rpart","nnet")

+1

大卫,这是接近'修复'的方法 - 只是'修复'分配产生的功能与原来的同名。然后原始文件被您的版本屏蔽(并且仍可通过'pkgname :: function'访问)。 – cbeleites 2012-04-02 14:50:52

+0

@cbeleites感谢您的评论。好东西。 – 2012-04-02 14:55:55

+0

大卫,不客气 – cbeleites 2012-04-02 14:56:31