我想在R中向下移动一个文件夹。例如,我的工作目录是foo/bar,我想要移动到foo/bar/subfolder:
setwd("/Users/foo/bar")
getwd()
[1] "/Users/foo/bar"
setwd("~/subfolder")
我接着收到:
setwd("~/subfolder")中出错:无法更改工作目录
我做错了什么?
我想在R中向下移动一个文件夹。例如,我的工作目录是foo/bar,我想要移动到foo/bar/subfolder:
setwd("/Users/foo/bar")
getwd()
[1] "/Users/foo/bar"
setwd("~/subfolder")
我接着收到:
setwd("~/subfolder")中出错:无法更改工作目录
我做错了什么?
~
并不是你认为的那样,它并不表示“当前目录”,而是指代你的主目录。要表示当前目录需要使用点符号.
。因此,你想要的是:setwd("./subfolder")
当前操作系统通常假定如果没有提供完整路径,则默认使用相对路径(即相对于当前目录)。因此,也可以简单地使用
setwd("subfolder")
路径中使用的符号摘要
.
= 当前目录..
= 当前目录的父目录~
= 主目录(有关主目录的说明,请参见下面的解释说明)/
作为第一个字符=根目录,例如:setwd("/folder")
/
在路径中=路径中目录之间的分隔符。例如:setwd("/folder/subfolder")
\
= 仅适用于Windows和DOS操作系统,反斜杠\
等同于/
。如果您在R中使用此格式,则需要使用双反斜杠\\
来进行'转义'。例如:setwd("C:\\folder\\subfolder")
。然而,为了保持跨平台兼容性,建议即使在Windows系统上也坚持使用正斜杠/
,因为这将被R转换为正确的路径。关于“主目录”的说明
在类Unix操作系统(如Linux、OS X、BSD)中,“主目录”指代由“~”表示的含义很明确。这个符号的意义由操作系统定义。根据不同的操作系统,它通常是/home/<username>
(在Linux和BSD中),/Users/<username>
(在OS X中),或者一个类似的平台相关变体。请参见此处以获取各种操作系统的定义列表。
但在Windows中情况略有不同,因为该操作系统不将“~”识别为有效路径。R for Windows FAQ解释了expand.path
如何解释Windows计算机上的主目录:
Sys.getenv("R_USER")
Sys.getenv("HOME")
Sys.getenv("HOMEDRIVE")
Sys.getenv("HOMEPATH")
而且,您可以使用命令找出路径"~"
的解释方式
normalizePath("~")