R语言 使用不同版本的R包
R编程语言通过在线存储库中的不同软件包提供不同的功能。官方存储库CRAN持续更新这些包,并经常发布新版本的包。
R的软件包系统默认设置为覆盖现有版本的软件包,以便用户始终拥有最新的版本。因此,任何更新都会覆盖之前的版本。因此,如果你想使用两个版本的包,你必须把它安装在不同的位置,并且必须相应地通过指定那个位置来导入它。
语法
.libPaths()
返回默认查看软件包的路径。第一个路径是用户库,用户选择下载的软件包会安装在这里。第二条是系统库路径,在这里安装 R 自带的默认包。
要检查已安装的软件包,请使用此命令。
install.packages()
它返回所有已安装软件包的信息,如版本、安装路径、对R版本的依赖性、软件包所需的其他进口。
安装不同版本的包
有时,软件的最新版本可能会有巨大的变化,这使得用户不得不恢复到以前的版本。一些函数可能被弃用,类被删除,函数的参数被改变,这对使用早期版本的现有用户来说可能是个麻烦。因此,用户可能想为某个特定的功能安装一个过时的版本,然后再恢复到现有的库。
语法
remotes::install_version(package , version=版本号, lib =location)
这个函数将软件包安装在用户指定的位置lib。由于缺乏适当的构建/编译软件包的工具链,这个函数可能无法工作。默认情况下,R for Windows会从CRAN中安装预编译的 “二进制包”。CRAN归档的是软件包的源代码,而不是我们需要安装的二进制文件。因此,需要Rtools来构建和编译库。
CRAN上的 “版本 “包依赖于Revolution Analytics MRAN服务器来安装特定版本的包,而不需要安装Rtools来安装二进制包,但这将会追溯到MRAN发布的日期,也就是接近2014-09-17。
语法
versions::install.dates(pkgs, dates, lib)
从MRAN服务器下载并安装CRAN上托管的软件包的最新版本,截止到某一特定日期。
例子
语法
versions::install.version(pkgs, versions, lib)
从MRAN服务器下载并安装CRAN上托管的软件包的命名版本。
例子
如果你已经有一个版本的软件包,而你想安装另一个版本,你必须改变R存储库的目录路径。即使版本不同,R也会覆盖之前安装的同一库。
在R会话中加载包
R搜索活动的库路径以找到所请求的包的安装。由于一个包的两个版本都安装在不同的位置,库函数仍然可以通过指定该包的位置来加载该包。
语法
library(package, lib.loc= location)
默认情况下,lib.loc = NULL ,这意味着R将在其默认的库路径中搜索软件包。
下面的例子说明了如何使用不同版本的包。
例子
输出:
使用packrat或renv工作
R会话中的任何安装、升级或更改都会带来R目录的变化,该目录在所有R会话中共享。不同的项目可能需要不同的软件包,因此可能会有很多不同的软件包依赖关系。因此,我们可能会改变一些在全局环境中共享的功能,从而影响所有其他会话。所以我们需要一个像python这样的 “虚拟环境 “来管理这些冲突的依赖关系。因此,项目本地库的想法就诞生了。
Packrat “和 “renv “ 是R中为这些目的提供的包。这些包有助于隔离不同的项目,这样一个项目就不会影响另一个项目,为每个项目提供自己的私有包库,使项目可移植,这样就很容易安装你的项目所依赖的包,并复制项目所需的确切的包版本。
Renv是一个用于R的依赖性管理工具包。使用’renv’,你可以创建和管理项目本地的R库,保存这些库的状态,以后根据需要恢复你的库。这些工具结合在一起,可以帮助你的项目更加孤立、可移植和可重复。
如果你已经拿起做一些项目,在实际工作之前,你必须解决版本控制问题;找到要使用的包的正确版本,或者必须处理依赖关系。Renv提供了更干净、更简单的方式来做到这一点。Renv解决了包的管理问题,但没有处理不同版本的R。 使用Renv的工作流程。
- 当你的项目开发到一定程度,并且你认为你或其他人将来可能要再次回到这个项目,通过运行 _ renv::init()_ 你可以初始化renv。
语法: renv::init(project = NULL, profile = NULL,settings = NULL,bare = FALSE,force = FALSE, restart = interactive() )
参数
- project。项目目录。
- profile:要激活的配置文件,例如 “开发 “或 “生产”。如果是NULL,则激活默认配置文件。
- settings:设置。新启动的项目要使用的设置列表。
- bare(布尔值)。如果为 “True”,则初始化项目时不尝试发现和安装R包的依赖关系。
- force (布尔值)。默认情况下,renv会拒绝将主目录初始化为项目。
- restart (Boolean): 在初始化项目后尝试重新启动R会话?如果嵌入R的前端设置了 “重启 “R选项,则会尝试重启会话。
发现当前项目中使用的软件包,然后用这些软件包初始化一个项目本地的私有R库。任何正在使用的软件包的当前安装版本(如在默认的R库中检测到的)随后被安装到项目的私有库中。
要启动一个新的项目并在其中初始化renv,请使用project参数来指定项目目录的位置。
这将建立一个具有私有库的项目本地环境,并确保将你使用的所有包安装到该库中。 你将得到你所有的软件包和版本依赖,并存储在一个叫做 _ renv.lock_ 的文件中 _ 。_ Renv还将写入活动项目目录下的文件,包括lockfile和项目目录下的’renv’文件夹,其中包含私有库和激活脚本,以加载项目。
运行 . libPaths()来检查项目中初始化了renv的库路径。
- 要将项目库的状态保存到 renv.lock 中,请调用 _ renv::snapshot()_ 或调用 _ renv::restore(_ )来恢复到锁文件中编码的先前状态。
- 通过运行 _ renv::restore()_ ,你将能够从renv.lock中重新安装所有依赖项,以确保你的项目设置尽可能接近你离开时的状态,并大大减少遇到与软件包版本有关的问题的机会。
例子
下面的程序演示了如何配置renv设置,如在项目目录下工作时启用或禁用自动快照。
例子