2012-11-08 15 views
-1

假設我們正在調試函數foo(),我們希望一次又一次修改它並使用一些參數運行它 - foo(bar="Hello", baz="How are you?") - 確保問題得到解決。隱藏曆史記錄中的函數定義以便於調試

foo()體的修改後,我們運行函數定義的線 - 使功能改進 - 現在,我們必須尋找在歷史含foo(bar="Hello", baz="How are you?")看行,如果修改後的foo()工作正常。 搜索歷史也可以通過繼續按「向上」鍵直到它到達函數定義之前,當我們上次運行foo(bar="Hello", baz="How are you?")時取代。

另一種可能性是將foo(bar="Hello", baz="How are you?")保存在剪貼板中,每次修改foo()正文時,我們只需從剪貼板粘貼foo(bar="Hello", baz="How are you?")並運行它。

但是,如果我們在同一時間用長身體修改幾個函數,所有這些解決方案都相當困難。我教過的最好的可能性是隱藏曆史中的函數定義 - 當我們使用本地R環境或使用像RStudio這樣的IDE時。有沒有可能做到這一點?有沒有更好的解決方案?

回答

4

可以source()從文件中的函數定義,而不是「複製 - 粘貼」(或以其他方式運行)從IDE /編輯器功能代碼塊。如果你這樣做(無論如何默認),採購將不會顯示在R控制檯中。最合理的編輯有鍵盤快捷鍵源/經由source()而由「粘貼」加載功能緩衝器/文件/窗口成R - 上的Emacs + ESS它是Ç - ÇÇ - 爲例。

你可以使用像Emacs這樣的合理編輯器來處理ESS,它不會將從代碼緩衝區發送的代碼交織到R緩衝區中,因此您不必從函數定義中向上鍵入,只能回溯歷史。

至少在Linux上,你可以使用常見的按Ctrl + [R,然後開始鍵入調用你想要的功能,它會做的事反向搜索的前幾個字符,您鍵入,然後在輸入將運行該命令/行。

+3

在RStudio中,您可以使用Ctrl + up進行反向搜索。 – hadley

相關問題