2010-03-25 42 views
6

我想在R包中寫入一些臨時數據到磁盤,並且我想確保它可以在每個操作系統上運行,而不會假設用戶具有管理權限。是否有一個現有的R函數可以提供所有主要操作系統臨時目錄的路徑?或者一種引用用戶主目錄的方式?從R寫入臨時數據

否則,我想嘗試這樣的:

Sys.getenv("temp") 

我相信,我不能指望人們有其研發地點的寫權限,否則我會引用包目錄中的路徑:.find.package("package.name")

回答

10

是的,有:tempdir

這將返回用戶臨時目錄內的會話特定目錄。 (因此,每當您在特定的R會話中調用它時,它會給出相同的值。關閉R並重新啓動,它會給您一個不同的目錄。)

pathological::temp_dir提供了一個更加用戶友好的包裝。

+1

完美,謝謝!注意自我:在提出問題之前嘗試apropos:'apropos(「temp」)'會返回'tempdir'和'tempfile'。 – Shane 2010-03-25 15:42:54

-1

一些進一步的思考之後,我認爲這應該工作:

path.expand("~") 

這將使主目錄,它應該有寫入權限。

+0

這給出了主目錄,而不是工作目錄。 – hadley 2010-03-25 16:29:20

+3

如果某人正在運行的代碼開始在我的主目錄中寫入臨時文件,我會感到有點惱火。 – 2010-03-25 18:54:41

+0

在這種情況下,這些可能是用戶想要保留的文件,但我會給他們選擇。這實際上是有一個很好的默認設置。我將使用'tempdir'來代替。 – Shane 2010-03-25 19:18:48