【问题标题】:How to automate working directory change如何自动更改工作目录
【发布时间】:2016-05-23 22:19:23
【问题描述】:

我通常在从 Google Drive 访问我的 R 代码时在 Windows 和 Mac 之间切换。每当我在台式机和笔记本电脑之间切换时,我需要做的一项重复性任务是(取消)注释我的 google 驱动器所在目录的文件路径。任何人都可以分享有关如何执行此操作的自动化代码吗?我已经在Stata中这样做了。

【问题讨论】:

  • 我已经通过创建一个 Rstudio 项目文件并访问/写入与该项目文件夹相关的所有文件来解决这个问题。它不依赖于操作系统。
  • 不管怎样,控制流语法是 if (cond) x else if (cond2) y,如 R 语言介绍材料中所述。

标签: r


【解决方案1】:

通常,对于我开始的每个项目或分析,我都会使用一个“类似配置”的 R 文件,它或多或少看起来像这样:

.job <- list ()

## rootDir in my laptop
.job$base_data_dir <- file.path ("", "home", "dmontaner", "datos")

## rootDir in my server
##.job$base_data_dir <- file.path ("", "scratch", "datos")

在这个“配置”文件中,我设置了在每台机器中保存数据的根目录。我在每台机器上保留一个不同的“配置”文件,并且不通过保管箱同步它们。

然后我用这一行开始我的 R 脚本:

try (source (".job.r"))

当我必须处理任何文件或文件夹时:

setwd (file.path (.job$base_data_dir, "raw_data"))
...
setwd (file.path (.job$base_data_dir, "results"))

像这样,如果你在两台机器上都保留数据目录的内部结构,你可以设置它被分配的基本目录或根目录,并访问两台机器上的数据。

file.path 函数还负责处理操作系统的变化。

在 R 会话中,我调用以 dot 开头的配置变量,因为它是一个隐藏变量,所以当我执行 ls () 或类似的事情时我看不到它。

【讨论】:

    【解决方案2】:

    这是我的解决方案:

    setwd(ifelse(.Platform$OS.type=="unix", "/Users/.../Google Drive", "C:/Users/.../Google Drive/"))
    

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 2014-12-02
      • 2015-02-22
      • 2016-03-14
      • 2014-11-08
      • 2011-12-01
      • 2023-03-14
      • 2012-04-03
      • 1970-01-01
      相关资源
      最近更新 更多