向下移动工作目录中的文件夹

时间:2016-05-23 00:14:51

标签: r working-directory

我正试图在R中直接向下移动一个文件夹。例如,我有一个foo / bar的工作目录,我想移动到foo / bar /子文件夹:

setwd("/Users/foo/bar")
getwd()
[1] "/Users/foo/bar"
setwd("~/subfolder")

然后我收到:

  

setwd中的错误("〜/子文件夹"):无法更改工作目录

我做错了什么?

1 个答案:

答案 0 :(得分:20)

符号~不符合你的想象。它并不意味着“当前目录”。 ~指的是您的主目录。

用于当前目录的正确符号是句点.

所以,你想要的是

setwd("./subfolder")

当前操作系统通常假设如果未提供完整路径,则默认将使用相对路径(即,相对于当前目录)。因此,也可以简单地使用

setwd("subfolder")

路径中使用的符号摘要

  • . =当前目录
  • .. =当前目录的父级
  • ~ =主目录(请参阅主页目录下的解释性说明
  • /作为第一个字符=根目录例如。 setwd("/folder")
  • 路径中目录之间的路径=分隔符中的
  • /。例如。 setwd("/folder/subfolder")
  • \ =在Windows和DOS操作系统中,反斜杠\相当于/。如果您在R中使用此格式,则需要使用双反斜杠\\到'escape'这个。例如,setwd("C:\\folder\\subfolder")但是,为了保持平台之间的兼容性,建议在Windows系统上坚持使用正斜杠/,因为这将由R转换为正确的路径。
  • 任何不以上述字符之一开头的路径都被解释为相对于当前目录。

关于“主页”目录的解释性说明

在Unix派生和类Unix操作系统(例如Linux,OsX,BSD)中,home引用的~目录的含义很简单。 ~的含义由操作系统定义。根据操作系统的不同,通常为/home/<username>(在Linux和BSD中),/Users/<username>(在OS X中)或类似的平台相关变体。有关各种操作系统的定义列表,请参阅here

但在Windows中,情况略有不同,因为操作系统无法将"~"识别为有效路径。 R for Windows FAQ解释了expand.path如何解释Windows计算机上的主目录,

  

主目录设置如下:如果环境变量为R_USER   设置,使用其值。否则,如果环境变量HOME是   设置,使用其值。在这两个用户可控制的设置之后,R   试图找到系统定义的主目录。它首先尝试使用   Windows“个人”目录(通常是   C:\ Users \用户名\文件)。如果失败,如果两个环境   设置变量HOMEDRIVE和HOMEPATH(它们通常是),   值是$ {HOMEDRIVE} $ {HOMEPATH}。如果所有这些都失败了,那就是当前的   使用工作目录。

根据我的经验,在Windows R上,最常将"~"解释为"C:\Users\username\Documents"。您可以使用以下命令找到环境变量的值

Sys.getenv("R_USER")
Sys.getenv("HOME")
Sys.getenv("HOMEDRIVE")
Sys.getenv("HOMEPATH")

并且,您可以使用命令

找出解释为"~"的路径
normalizePath("~")