繁体   English   中英

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

[英]Moving down a folder in working directory

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

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

然后我收到:

setwd中的错误(“〜/ subfolder”):无法更改工作目录

我究竟做错了什么?

符号~不会像你认为的那样做。 它并不意味着“当前目录”。 ~指的是你的主目录。

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

那么,你想要的是什么

setwd("./subfolder")

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

setwd("subfolder")

路径中使用的符号摘要

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

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

在Unix衍生的和类Unix操作系统(例如Linux,OsX,BSD)中, ~所指的home目录的含义是直截了当的。 ~的含义由操作系统定义。 根据操作系统的不同,通常是/home/<username> (在Linux和BSD中), /Users/<username> (在OS X中)或类似的平台相关变体。 请参阅此处以获取各种操作系统的定义列表。

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

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

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

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

并且,您可以通过使用该命令找出解释为"~"路径

normalizePath("~")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM