RStudio:为每个.Rproj使用不同的软件包版本

时间:2016-09-25 23:32:29

标签: r rstudio

我正在使用一些较旧的R项目,这些项目依赖于目前已弃用的(或经过大量修改的)多个软件包。为了使所有内容顺利运行,我使用了旧版本的这些软件包,我已将其保存在另一个文件夹中,并在必要时将手动加载到%userprofile%\documents\R\win-library\3.3。但是,这不方便,特别是如果我想同时运行多个项目,其中一些项目需要新的和更新版本的软件包。

我的问题 - 有没有办法为每个.Rproj指定自定义目录,从中加载库?

2 个答案:

答案 0 :(得分:3)

你可以解决这个更简单的

  1. 为每个项目设置一个顶级目录,致电projAprojB,...
  2. 在其中的每一个中,创建一个目录libs/,比方说。
  3. 在每个目录中都有一个文件.Rprofile,其中包含.libPaths("./libs")
  4. 等单一作业

    现在当你在不同的项目目录中启动R时,每个项目目录前面都会有一个单独的库目录,允许你在那里放置每个项目的覆盖。

    简而言之,此处的方法概述允许您随意保留本地已修改的包。 (如果您愿意,您甚至可以通过.libPaths()分配公共目录。)

    好的事情是这将

    1. 使用任何R调用,批处理或GUI或RStudio或闪亮或......
    2. 不依赖于任何其他工具,因此
    3. 不依赖于RStudio或.Rprof文件 - 尽管您也可以自由使用RStudio。
    4. 经常会有Base R为你服务。

答案 1 :(得分:2)

一种选择是使用Revolution Analytics的checkpoint包。

您可以为项目中的每个主R文件指明您希望加载一组软件包的日期。您可以阅读更多相关信息here

enter image description here

要从镜像中的给定日期提取快照包,请使用getValidSnapshots(mranRootUrl = mranUrl())

创建检查点:

# Create temporary project and set working directory

example_project <- paste0("~/checkpoint_example_project_", Sys.Date())

dir.create(example_project, recursive = TRUE)
oldwd <- setwd(example_project)


# Write dummy code file to project

cat("library(MASS)", "library(foreach)",
    sep="\n",
    file="checkpoint_example_code.R")

# Create a checkpoint by specifying a snapshot date

library(checkpoint)
checkpoint("2014-09-17")

# Check that CRAN mirror is set to MRAN snapshot
getOption("repos")

# Check that library path is set to ~/.checkpoint
.libPaths()

# Check which packages are installed in checkpoint library
installed.packages()

# cleanup
unlink(example_project, recursive = TRUE)
setwd(oldwd)