R 在项目转移后保留有效的工作区引用。
我一直在做一个R项目(projectA),我想把它交给一个同事,在脚本中处理工作区引用的最佳方法是什么?举例来说,让我们假设projectA由几个R脚本组成,每个脚本读取输入并将输出写入特定目录(dir)。所有目录都包含在我的本地dropbox中。脚本的I/O部分如下所示:R 在项目转移后保留有效的工作区引用。,r,project,directory-structure,project-organization,R,Project,Directory Structure,Project Organization,我一直在做一个R项目(projectA),我想把它交给一个同事,在脚本中处理工作区引用的最佳方法是什么?举例来说,让我们假设projectA由几个R脚本组成,每个脚本读取输入并将输出写入特定目录(dir)。所有目录都包含在我的本地dropbox中。脚本的I/O部分如下所示: # Script 1. # Give input and output names and dirs: dat1Dir <- "D:/Dropbox/ProjectA/source1/" dat1In
# Script 1.
# Give input and output names and dirs:
dat1Dir <- "D:/Dropbox/ProjectA/source1/"
dat1In <- "foo1.asc"
dat2Dir <- "D:/Dropbox/ProjectA/source2/"
dat2In <- "foo2.asc"
outDir <- "D:/Dropbox/ProjectA/output1/"
outName <- "fooOut1.asc"
# Read data
setwd(dat1Dir)
dat1 <- read.table(dat1In)
setwd(dat2Dir)
dat2 <- read.table(dat2In)
# do stuff with dat1 and dat2 that result in new data foo
# Write new data foo to file
setwd(outDir)
write.table(foo, outName)
# Script 2.
# Give input and output names and dirs
dat1Dir <- "D:/Dropbox/ProjectA/output1/"
dat1In <- "fooOut1.asc"
outDir <- "D:/Dropbox/ProjectA/output2/"
outName <- "fooOut2.asc"
以便:
# At my own PC
dat1Dir <- paste(FindDir(), "ProjectA/source1", sep= "")
> "D:/Dropbox/ProjectA/source1/"
# At my colleagues PC
dat1Dir <- paste(FindDir(), "ProjectA/source1", sep= "")
> "C:Users/foo/my documents/ProjectA/source1/"
#在我自己的电脑上
dat1Dir“D:/Dropbox/ProjectA/source1/”
#在我的同事电脑上
dat1Dir“C:Users/foo/my documents/ProjectA/source1/”
或者也许有另一种方式?我们的工作IT基础设施目前不允许使用共享光盘。我将把助手函数放在一个“官方”R项目中(即,托管于),但我希望在需要许多I/O参数时使用脚本,因为代码可以很容易地查看和注释
非常感谢 您应该能够通过使用相对目录路径来实现这一点。这是我为Dropbox中的R项目所做的,我在Windows和OS X机器上编辑/运行这些项目,Dropbox文件夹分别为
D:/Dropbox
和/Users/robin/Dropbox
要做到这一点,您需要
setwd('/Users/robin/Dropbox;)
(请参阅)在R中设置当前工作目录(在脚本的第一行中,或在运行前在控制台上以交互方式)'ProjectA/source1'
位;如果将当前目录设置为ProjectA文件夹,则为'source1'
(这是一个更好的主意)你可能还对我喜欢的R库感兴趣——它为你提供了非常好的功能,可以为R中的这类工作制作独立的项目,而且它们完全是可复制的,可以在计算机之间移动,等等。我写了一篇可能有用的文章。Hi@robintw,谢谢你的回答。我已经使用R大约5年了,但我从未意识到
setwd()
中的路径可以相对于当前的getwd()
。我总是把它们全部写下来。所以谢谢你指出这一点,我相信这会奏效的。
# At my own PC
dat1Dir <- paste(FindDir(), "ProjectA/source1", sep= "")
> "D:/Dropbox/ProjectA/source1/"
# At my colleagues PC
dat1Dir <- paste(FindDir(), "ProjectA/source1", sep= "")
> "C:Users/foo/my documents/ProjectA/source1/"