2011-12-02 63 views
2

我知道我可以find file name from full file path in R,但是有沒有辦法從文件名中定義文件的路徑?考慮一下這種情況:將數據文件存儲在雲中(例如Dropbox),這樣該文件的路徑在您的家中稍有不同:read.table("path/user1/data.dat")和工作:read.table("path/user2/data.dat")。因此,每當您想要read.table()時,都必須更改路徑中的一個元素以匹配您的工作路徑或主路徑(在Mac OS X上,它特別是您需要更改的路徑的User部分)。我想知道是否有可能讓R自動檢測路徑中的這種變化(例如,不同的User)或僅從該文件的名稱檢測文件的路徑。從R中的文件名定義文件路徑

+2

不是一個真正的答案,但到主目錄的路徑可以設置爲'「〜/」'。在Windows中,這似乎是'user \ documents'的路徑,默認情況下,該文件夾包含保管箱文件夾,並在Linux中保存爲'user',默認情況下保存保管箱文件夾。所以對於dropbox'read.table(「〜/ Dropbox/...」)應該可以工作,我想。應該也適用於Mac(因爲這是Unix)。 –

+0

@Sasha不,它不能在Mac上使用。 Dropbox被保存在'/ Users/username/Dropbox/...'中。 –

+0

是的,''〜/「'應該鏈接到Mac和Linux上的'/ Users/username /',而不是'/ users'。對於那個很抱歉。 –

回答

6

您可以通過Sys.getenv()訪問環境變量。

這裏是我的機器上的結果中的一個片段:

Sys.getenv() 

... 
USERNAME 
"Andrie" 
USERPROFILE 
"C:\\Users\\Andrie" 
windir 
"C:\\Windows" 

您可以通過在調用該元素的名稱提取單個元素:

> Sys.getenv("USERNAME") 
[1] "Andrie" 

如果你可以在這些變量中確切地確定你需要什麼,然後你可以使用file.path

構建你的文件路徑

有關環境變量的一些具體的系統異常更多的信息,請參閱?Sys.getenv

+0

優秀,謝謝。在Mac上,'Sys.getenv()'中的這個元素可以是'USER'或'LOGNAME'。 –