【问题标题】:Moving down a folder in working directory下移工作目录中的文件夹
【发布时间】:2016-09-19 17:48:29
【问题描述】:

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

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

然后我收到:

setwd("~/subfolder") 中的错误:无法更改工作目录

我做错了什么?

【问题讨论】:

    标签: r working-directory


    【解决方案1】:

    符号~ 并没有像你想象的那样做。它并不意味着“当前目录”。 ~ 指的是您的主目录。

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

    所以,你想要的是

    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:\用户\用户名\文档)。如果失败,如果两个环境 变量 HOMEDRIVE 和 HOMEPATH 已设置(它们通常是), 值为 ${HOMEDRIVE}${HOMEPATH}。如果所有这些都失败,则当前 使用工作目录。

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

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

    并且,您可以使用命令找出"~" 被解释为什么路径

    normalizePath("~")
    

    【讨论】:

      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 2015-07-17
      相关资源
      最近更新 更多