2015-12-01 27 views
18

我見過的堆棧溢出類似的問題,但幾乎沒有確鑿的答案,當然也沒有回答爲我工作。如何使用全球環境中的物體在Rstudio降價

什麼是訪問和使用對象(迴歸擬合,數據幀,其他對象)位於在降價(Rstudio)腳本全球研發環境的最簡單方法。

我覺得很奇怪,有沒有簡單的解決這個,鑑於RStudio隊的傾向,使事情舒適和有效。

在此先感謝。

+0

你是如何處理你的RMarkdown文件?通過推動「編織HTML」按鈕,或者在某處運行「編織」命令? – arvi1000

+0

我推「針織HTML」 - 這可能是問題嗎? –

+0

是的。請參閱下面的答案 – arvi1000

回答

21

是好還是壞,這種忽略是故意的。依賴在文檔外部創建的對象會使文檔的可重複性降低 - 也就是說,如果您的文檔需要全局環境中的數據,則不能僅僅向某人(或兩年以內)提供文檔和數據文件並讓它們重新創建它本身。

出於這個原因,並且爲了在後臺執行渲染,RStudio實際上創建一個單獨的R對話呈現該文檔。該背景R會話無法看到您在RStudio中看到的交互式R會話中的任何環境。

解決此問題的最佳方法是將您用於創建全局環境內容的代碼移動到文檔中(如果您不希望它顯示在文檔中,則可以使用echo = FALSE) 。這使您的文件獨立和可重複。

如果你不能做到這一點,也可以採取直接在全球環境中使用的數據的幾種方法:在

  1. 而不是使用針織HTML按鈕,類型rmarkdown::render("your_doc.Rmd") R控制檯。這將在當前會話中而不是後臺會話中編織。或者:

  2. 將您的全局環境保存到.Rdata文件之前(使用R的save函數)和load它在您的文檔中。

+0

也可以使用'knitr :: knit(「your_doc.Rmd」)'。R Studio「編織HTML」按鈕可能使用rmarkdown或knitr引擎,具體取決於個人的偏好設置,在某些情況下,它們的行爲可能略有不同 – arvi1000

+0

但如果我不想每次都重新運行所有代碼「針織」?由於我的數據集很大(數百萬行,> 200個變量),因此重新運行代碼將非常耗時。可以降價跳過重新回扣一些塊?我還沒有找到這樣的論點,即。 –

+3

問題解決(cache.lazy = T)。謝謝你們。 –

1

我自己也有同樣的問題。有些東西每次重現都非常耗時。

我覺得有可能是另一種答案。如果將您的環境使用save.image()功能保存到與標準.Rdata不同的文件中,該怎麼辦?然後,帶回load()

要確保你使用的是相同的數據,使用md5sum()工具

乾杯,繩子