我正在尝试直接在 R 中向下移动工作目录。例如,我有一个 foo/bar 工作目录,我想移动到 foo/bar/子文件夹:
setwd("/Users/foo/bar")
getwd()
[1] "/Users/foo/bar"
setwd("~/subfolder")
然后我收到:
setwd("~/subfolder") 中的错误:无法更改工作目录
我究竟做错了什么?
符号~
并没有像你想象的那样做。它并不意味着“当前目录”。~
指您的主目录。
当前目录使用的正确符号是句点.
所以,你想要的是
setwd("./subfolder")
当前的操作系统通常假设如果未提供完整路径,则默认情况下将使用相对路径(即相对于当前目录)。因此也可以简单地使用
setwd("subfolder")
路径中使用的符号摘要
-
.
= 当前目录
-
..
= 当前目录的父目录
-
~
= 主目录(请参阅下面有关主目录的说明性注释)
-
/
作为第一个字符 = 根目录 例如setwd("/folder")
-
/
路径内 = 路径中目录之间的分隔符。例如。setwd("/folder/subfolder")
-
\
= 在 Windows 和 DOS 操作系统中only, 反斜杠\
相当于/
。如果在 R 中使用这种格式,则需要使用双反斜杠\\
to 'escape https://en.wikipedia.org/wiki/Escape_character' 这。例如。,setwd("C:\\folder\\subfolder")
. However,为了保持平台之间的兼容性,建议坚持使用正斜杠/
即使在 Windows 系统上,也会被 R 转换为正确的路径。
- 任何不以上述字符之一开头的路径都被解释为相对于当前目录。
关于“主”目录的注释
在 Unix 衍生和类 Unix 操作系统(如 Linux、OsX、BSD)中的含义home
引用的目录~
很简单。的含义~
由操作系统定义。根据操作系统的不同,通常是/home/<username>
(在 Linux 和 BSD 中),/Users/<username>
(在 OS X 中)或类似的依赖于平台的变体。看here https://en.wikipedia.org/wiki/Home_directory#Default_home_directory_per_operating_system获取各种操作系统的定义列表。
但在 Windows 中情况略有不同,因为操作系统无法识别"~"
作为有效路径。 R for Windows 常见问题解答解释了如何expand.path
如此解释 Windows 计算机上的主目录,
主目录设置如下:如果环境变量为R_USER
设置后,将使用其值。否则如果环境变量 HOME 是
设置后,将使用其值。在这两个用户可控设置之后,R
尝试查找系统定义的主目录。它首先尝试使用
Windows“个人”目录(通常是
C:\Users\用户名\Documents)。如果失败,如果两个环境
设置变量 HOMEDRIVE 和 HOMEPATH(通常是这样),
值为 ${HOMEDRIVE}${HOMEPATH}。如果所有这些都失败,则当前
使用工作目录。
根据我的经验,在 Windows R 上最常解释的是"~"
as "C:\Users\username\Documents"
。您可以使用以下命令查找环境变量的值
Sys.getenv("R_USER")
Sys.getenv("HOME")
Sys.getenv("HOMEDRIVE")
Sys.getenv("HOMEPATH")
并且,您可以找出什么路径"~"
被解释为通过使用命令
normalizePath("~")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)