2012-04-02 59 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