R中的父目录

30 r

如何获取R中父目录的路径?我必须编写一个R脚本,它从父目录中的目录获取输入,并将数据输出到父文件夹中的另一个目录.所以,如果我能找到父文件夹的路径,那么我可以这样做.

Jam*_*mes 35

您可以使用dirnameon getwd来提取除当前目录的最高级别之外的所有内容:

dirname(getwd())
[1] "C:/Documents and Settings"
Run Code Online (Sandbox Code Playgroud)


Hon*_*Ooi 23

我假设你的意思是R的工作目录的父目录?

最简单的解决方案可能如下.

wd <- getwd()
setwd("..")
parent <- getwd()
setwd(wd)
Run Code Online (Sandbox Code Playgroud)

这将保存工作目录,将其更改为其父目录,获取结果parent,然后再次重置工作目录.这节省了必须处理根目录,主目录和其他特定于操作系统的功能的变幻莫测,这可能需要一堆摆弄正则表达式.

  • +1为"..".我总是在带有cd的终端中使用它,但我从不需要进入`R`,这很好.谢谢 (2认同)

小智 19

实际上dirname允许返回几个父文件夹

Path="FolderA/FolderB/FolderC/FolderD"

dirname(Path)
Run Code Online (Sandbox Code Playgroud)

"FolderA/FolderB中/ FolderC"

dirname(dirname(Path))
Run Code Online (Sandbox Code Playgroud)

"FolderA/FolderB中"

等等...


Mic*_*ele 6

也许这两个技巧可能会有所帮助

"~/"  # after the forward slash you "are" in your home folder
Run Code Online (Sandbox Code Playgroud)

然后在窗户上

"C:/" # you are in your main hard drive
"G:/" # you are just in another hard drive :-)
Run Code Online (Sandbox Code Playgroud)

在unix上你可以做类似的事情

"/etc/"
Run Code Online (Sandbox Code Playgroud)

然后你可以进入你需要的任何子目录

或者正如@Hong Ooi 建议的那样,您可以使用以下命令进入工作目录的父目录

"../"
Run Code Online (Sandbox Code Playgroud)

注意:在最后一次正斜杠按下之后tab,您将拥有所有文件和文件夹,非常方便,尤其是在RStudio


Kei*_*itt 5

另一种可能性:

parts <- unlist(strsplit(getwd(), .Platform$file.sep))
do.call(file.path, as.list(parts[1:length(parts) - 1]))
Run Code Online (Sandbox Code Playgroud)

这会将文件路径分割成目录,删除最后一个目录,然后再次将各部分重新组合成文件路径。