0

我正在创建一系列可供多人使用的 r 脚本,这意味着使用和存储的文件的工作目录会有所不同。有两个文件夹,一个用于 R 代码,称为“rcode”,另一个用于存储生成的输出,称为“data”。这两个文件夹将始终串联共享。为了适应不断变化的工作目录,我创建了一个“全局”脚本,该脚本具有以下代码行并位于“rcode”文件夹中:

source_path = rstudioapi::getActiveDocumentContext()$path 

setwd(dirname(source_path))

swd_data <- paste0("..\\data\\")

第一行获取全局脚本的源路径。第二行使它成为工作目录。第三行本质上告诉脚本将输出存储在“data”文件夹中,该文件夹与“rcode”文件夹具有相同的路径。因此,要读取我写的“数据”文件夹中的 csv 文件:

old_total_demand <- read.csv(paste0(swd_data, "boerne_total_demand.csv"))

当我在我的 Windows 笔记本电脑上使用这个脚本时,它运行良好,但是当我在我的 Mac 上使用它时,我收到以下错误:

Error in file(file, "rt") : cannot open the connection

In addition: Warning message:

In file(file, "rt") :
  cannot open file '..\data\demand\boerne_total_demand.csv': No such file or directory

有人知道为什么会这样吗?在此先感谢您的帮助。

4

2 回答 2

1

我不确定您的合作者将使用什么系统,但由于 Window/Mac/Linux 之间在路径编写方式方面的差异,您可能会遇到问题。我建议您使用 RStudio 创建一个 R 项目.Rprj并将其保存在包含 and 子目录的目录中datarcode并共享整个项目目录。

/Project_dir/MyProject.Rprj
/Project_dir/data/
/Project_dir/rcode/

然后从通过 RStudio 打开的 R 项目中,您应该能够通过以下方式直接引用您的数据:

data <- read.csv("data/boerne_total_demand.csv")

工作目录将始终是您.Rproj的存储位置,因此您可以避免在setwd与他人共享和协作时造成大量混乱。

于 2022-01-28T22:31:16.397 回答
0

我手头有当前脚本中的代码。

我希望你喜欢它 !


path <- dirname(getActiveDocumentContext()$path)

setwd(path)

swd_path <- paste0(path,"/data/")

if(!dir.exists(swd_path)){
  
  dir.create(swd_path)
  
}

old_total_demand <- read.csv(paste0(swd_data, "boerne_total_demand.csv"))


于 2022-01-28T22:29:33.973 回答