2010-08-02 53 views
16

我已經在我的R腳本中包含了一個名爲blotter的庫,它有一個bug。有沒有一種簡單的方法可以讓我編輯源代碼來嘗試和調試問題?如何編輯和調試R庫源

+1

[r修改和重建包]的可能重複(https://stackoverflow.com/questions/34800331/r-modify-and-rebuild-package) – Scarabee 2017-10-13 10:08:21

回答

16

查找tracebrowser函數,它們是R中用於調試的基本工具。假設你要編輯的功能foo源,然後說

trace("foo",edit=TRUE) 

將在編輯器中打開foo的來源爲你改變。但是,這是用於交互式調試的;包中的源文件不會更改。因此,一旦發現錯誤,您需要更改軟件包源文件以使更改永久生效。

+0

嗨!我已經下載了一個軟件包,並且知道我必須編輯的功能 - 我無法在所有文件中找到它。什麼是正確的方式來做到這一點?你能指出我正確的方向嗎? – vagabond 2016-07-12 21:36:33

9

的這種特徵在R的開發版本中實現(2010年7月16日):

一個新的設施已被添加到R-devel的通過的 包作者試驗。

這個想法是將修改過的代碼從軟件包源代碼插入到 運行包中,而無需重新安裝。所以人們可以在一個快速循環中改變,測試,改變, 等等。

該機制是評估一些源代碼文件,返回一個 環境對象,它是代碼的快照。從這個 環境中,可以將功能和方法插入到當前會話中的包的環境 中。該插入使用trace() 機制,因此可以恢復原始代碼。

一步法版本是:

insertSource("mySourceFile.R", package = "myPackage", functions = "foo")

看到這個職位的更多細節:Inserting and testing revised functions in a package

3

你的問題有沒有爲我編輯源到一個簡單的方法嘗試並調試問題?有明顯的答案:使用源碼,盧克!

blotter是一個包R-Forge從哪裏可以得到blotter sources here。這是查看Open Source的標準方式,可能還會幫助解決錯誤。

+1

好的,我該怎麼做?通常我可以稱之爲'圖書館',我假設我無法處理這些資源。我下載了源代碼,但有近40個文件。我是否每個人都運行「源代碼」以便將它們放入我的腳本中? – 2010-08-02 23:25:28

+3

@Ben McCann假設沒有C或FORTRAN代碼,你可以提取R文件,'source()'它們並從那裏開始工作(每次你改變文件時你必須提供它或者將它複製/粘貼到R中)。一旦你有一切工作,你可以將文件複製回包二進制文件並構建它。我在這裏的博客文章中描述了一個快速的分步構建R包:http://danganothererror.wordpress.com/2010/07/23/building-an-r-package-under-windows-without- cc-or-fortran-code/ – 2011-06-07 14:04:35