2015-07-03 72 views
1

我必須如何直接在物理RData中使用data.frame?

1)負載從物理RDATA到存儲器的data.frame,

2)進行修改,

3)保存回物理RDATA,

4)將其從內存中刪除以避免衝突?

難道我可以跳過加載/保存步驟並直接對物理RData進行永久性更改嗎?有沒有像使用SQLite/MySQL數據庫一樣使用data.frame的方法?或者我應該使用SQLite/MySQL(而不是data.frame)作爲數據存儲?

更多的想法:我認爲主要區別在於使用SQLite/MySQL與數據庫建立連接,但要使用RData中的data.frame在內存中創建副本。後面的方法可能會在複雜的程序中產生衝突。爲避免潛在的衝突,您必須保存data.frame,並在每次更改時立即將其從內存中移除。

謝謝!

+0

無論誰投票結束,你可以在做這些之前做一些有用的評論嗎? – Jfly

+0

您是否正在嘗試使用R或其他程序進行更改? – C8H10N4O2

+0

是的。使用R.但我發現它一貫的加載/保存是乏味的。 – Jfly

回答

3

而不是使用load你可能要考慮使用attach。這可以將保存的數據對象附加到搜索路徑,而無需將其中的所有對象加載到全局環境中。數據框將可以使用。

如果您想更改數據框,那麼您需要將其複製到全局環境(將自動進行大多數編輯),然後您需要再次保存它(不存在簡單的保存方法它轉換成包含其他對象的.Rdata文件)。

完成後,您可以使用detach(但是如果您在全局環境中創建了副本,那麼您仍然需要刪除該副本)。

如果你不喜歡打字load/save命令(或attach/detach)每一次,那麼你可以編寫自己的函數,所有的步驟也適用於你(如果複製僅在環境該功能,那麼你不必擔心刪除它)。

您可能還想考慮存儲數據的不同方式。典型的.Rdata文件適用於全或無的方法。 saveRDSreadRDS函數將保存並讀取一個對象(並且在讀入時不強制使用相同的名稱)。與數據庫方法的接口可能是最好的,如果你經常更改表格並希望它們存儲在R之外。