2011-12-02 62 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'。 –