如何获取R中的当前文件目录

时间:2013-12-18 06:39:51

标签: r directory

我在这里看到了很多相关的答案,但我没有找到一个正确的方法来解决我在windows系统下的问题... 我知道链接the similar question 我得到setwd()可以找到我想要的目录,但是,我的R脚本可能会移动到另一个目录而不做任何修改,所以我想知道当前的文件目录,因为有类似source(...)的表达式,这个叫做源文件和R项目中同一个父目录下的执行文件,怎么办? 任何帮助表示感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用getwd()功能获取当前目录并为其命名,例如:

cpath = getwd()

另一个有用的功能是file.path,它可以帮助您使用简单的语法指定新目录。例如,您希望获取当前目录“上”一级的目录,您可以使用:

upp.dir = file.path("..", "cpath")

这会将upp.dir设为"../Your_Current_Dir"。如何更改到当前目录中的另一个文件夹(称为Folder_A)?使用:

folderA = file.path("cpath", "Folder_A")

这些可以帮助您轻松浏览文件系统。

答案 1 :(得分:0)

基本上,如果您编写脚本并且这些脚本取决于它们的位置,那么您就是在做错了。

在包中编写代码。参数化功能使它们普遍适用。如果您有包含数据的文件夹,则将其中一个参数作为文件夹。

使用source()调用的脚本无法可靠地找到自己,但这应该不是问题,因为 WHATVER CALLED THE SCRIPT 知道脚本在哪里(它必须或如何否则它可以调用吗?)所以它可以将其作为参数传递。类似的东西:

 > youarehere = "C:\foo\"
 > source("C:\foo\bar.R")

现在bar.R可以执行setwd(youarehere)并且它可以正常工作,即使它编写得很糟糕,以至于它依赖于在其包含文件夹中获取其他代码。

或者你可以这样做:

> setwd(youarehere)
> source("bar.R")

在您的通话功能中。

但实际上,这是一个失败,它是代码编写错误的标志。使用函数,编写包,使用devtools,它真的不那么难,然后你的代码可以在任何地方工作,你不会编写愚蠢的脚本,这是source()调用的曲折迷宫。

保持优雅。