检测OS并在R中适当地更改路径

时间:2014-03-15 11:12:23

标签: linux windows r path

我的计算机上安装了两个操作系统 - Windows和Linux。当我在Windows中编写脚本然后尝试在linux上运行它们时,我必须改变每条路径。

例如,要在Windows中设置我的工作目录,我必须输入setwd("d://MyStatistics")

但是,在linux中,此命令为setwd("/media/55276F9D5951EC83/MyStatistics")

是否可以自动检测当前操作系统并更改路径(如果来自其他系统)?

3 个答案:

答案 0 :(得分:1)

link会有所帮助。

Sys.info()返回正在运行的平台

的详细信息

答案 1 :(得分:0)

使用if条件来测试R.version$platform.Platform$OS.typ

# It's as simple as...
path <- "/media/55276F9D5951EC83/MyStatistics"
if( .Platform$OS.type == "windows" )
  path <- "d:\\MyStatistics"

setwd( path )

答案 2 :(得分:0)

如果两个系统在一个地方都有相同的文件夹集,你可以轻松地实现你的“一条路径适合所有人”的目标(编辑:只需重新阅读问题,并且因为你在谈论一台计算机,这应该是案件)。然后,您可以使用Roland的答案等方法将该位置设置为脚本开头的工作目录,或者通过将其添加到每个操作系统中的Rprofile.site使其成为R打开的默认目录。然后,您可以通过粘贴到初始目录来设置工作目录。

类似的东西:

#add line to Rprofile.site for both OS
setwd("/path/to/folder/containing/data/folders")

然后在剧本中:

starting.directory = getwd() #at beginning of script
setwd(paste0(starting.directory, "/MyStatistics")) 

您也可以在Rprofile.site中添加“starting.directory”作为对象:

#add line to Rprofile.site for both OS
starting.directory <- "/path/to/folder/containing/data/folders"

然后使用与上面相同的paste0。

您还可以在两个操作系统中更改Rprofile.site以包含具有各种工作目录名称的对象,这些对象指向具有OS特定路径的同一文件夹,以便它们可以被称为“setwd(myStatsDirectory)”,并且粘贴到上面。也许最好的方法是为你希望能够在两个系统中使用的每个驱动器做类似的事情,所以你可以做类似的事情:

setwd(D.Drive)
setwd(paste0(D.Drive, "/folder1/folder2/etc"))

(编辑:这是与Simon O'Hanlon对Roland的答案的评论类似的方法,使用代字号和主目录)