2011-03-30 72 views
4

在我編寫.R函數時,我經常需要手動編寫源代碼(「funcname.r」)以獲取工作區中反映的更改。我相信它必須能夠自動完成。所以我想只是對功能進行修改,保存功能,並且能夠在R工作區中使用新功能,而無需手動「採購」此功能。我怎樣才能做到這一點?在更改時自動「採購」功能

更新:我知道如何選擇適當的代碼行,並在R Editor(RGui)中按下CTRL + R,或者使用Notepad ++並將行寫入R.但是這種方法有一個缺點,使我的工作區控制檯「混亂」。如果可能的話,我想停止這種做法。

+1

你可能會考慮使用一個IDE,比如帶ESS的Emacs,或者在你的腳本文件中寫這行,並使用CTRL-R發送到基本Rgui中的控制檯。或者我誤解了你的問題?你能告訴我們你用什麼平臺和程序來編寫和評估你的腳本嗎? – 2011-03-30 20:18:09

+0

我更新了我的第一個問題,請看看。 – 2011-03-30 20:33:43

+0

可能的重複:http://stackoverflow.com/q/4055614/199217 – 2011-03-31 05:42:01

回答

2

如果你準備將你的函數打包成一個包,你可能會喜歡探索Hadley的devtools包。這提供了一套工具來編寫,測試和記錄包。

https://github.com/hadley/devtools

這種方法有許多優點,但主要是用最少的重新輸入的重新加載包。

你仍然必須鍵入load_all的數據類型(「yourpackage」),但我覺得打字這個小金額相比devtools的優勢小啤酒。

有關其他信息,包括如何設置devtools,看看https://github.com/hadley/devtools/wiki/development

1

這可能是不可能的(自動檢測光盤更改,無需干預或至少運行一行)。

R需要讀入存儲器的功能,所以在盤上的變化不會在工作區中反射的光而不重裝功能。

如果你到在開發過程開發R裏面的函數,雜亂的一些量將有可能不可避免的,但也許我可以建議你嘗試寫一個R-包來安裝你的功能呢?

這具有能夠穩健地記錄您的功能,使用延遲加載,讓你立即訪問你的函數/數據集不採購它們的優勢。

不要害怕製造包裝的,它很容易與package.skeleton(),並沒有去CRAN但可能是自己的個人使用,而不分配!玩得開心!

嘗試去接受在開發過程中的一些混亂知道你正在朝着自己的目標工作和戰鬥組織代碼和文檔的好打!

我們只是不完美的人,在一個不完美的世界,但我們的意思是好的!

1

如果你能得到你的文本編輯器來運行系統命令它保存後的文件,那麼你可以使用類似的AutoIt(上Windows)或一個批處理腳本(在UNIX衍生版上)將呼叫傳遞給R的所有正在運行的副本。但是,這對於沒有太多收穫的工作來說是很多的工作。

儘管如此,我認爲它更有可能在文本編輯器端被事件驅動,而不是在R不斷掃描更新(或以某種方式與操作系統的更新事件消息傳遞系統接口)。

2

如果您使用的是Eclipse + StatET,則可以按CTRL + R + S來保存腳本並將其來源。儘可能地接近自動。

3

您可以使用R studio,它有一個保存選項源。

+0

我upvoted這個答覆,因爲這是我目前使用的方法。 – 2012-04-24 10:51:56