我正在使用一些较旧的R项目,这些项目依赖于目前已弃用的(或经过大量修改的)多个软件包。为了使所有内容顺利运行,我使用了旧版本的这些软件包,我已将其保存在另一个文件夹中,并在必要时将手动加载到%userprofile%\documents\R\win-library\3.3
。但是,这不方便,特别是如果我想同时运行多个项目,其中一些项目需要新的和更新版本的软件包。
我的问题 - 有没有办法为每个.Rproj
指定自定义目录,从中加载库?
答案 0 :(得分:3)
你可以解决这个更简单的:
projA
,projB
,... libs/
,比方说。.Rprofile
,其中包含.libPaths("./libs")
现在当你在不同的项目目录中启动R时,每个项目目录前面都会有一个单独的库目录,允许你在那里放置每个项目的覆盖。
简而言之,此处的方法概述允许您随意保留本地和已修改的包。 (如果您愿意,您甚至可以通过.libPaths()
分配公共目录。)
好的事情是这将
.Rprof
文件 - 尽管您也可以自由使用RStudio。经常会有Base R为你服务。
答案 1 :(得分:2)
一种选择是使用Revolution Analytics的checkpoint
包。
您可以为项目中的每个主R文件指明您希望加载一组软件包的日期。您可以阅读更多相关信息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)