yon*_*oni 13 dependencies r package
R是否有依赖项管理工具来促进项目特定的依赖项?我正在寻找类似于Java的maven,Ruby的捆绑器,Python的virtualenv,Node的npm等等.
我知道DESCRIPTION文件中的"Depends"子句以及R_LIBS工具,但这些似乎不能协同工作以提供一些非常常见的工作流程的解决方案.
我基本上希望能够检查一个项目并运行一个命令来构建和测试项目.该命令应将任何所需的包安装到特定于项目的库中,而不会影响全局R安装.例如:
my_project/.Rlibs/*
Run Code Online (Sandbox Code Playgroud)
不幸的是,Depends:在DESCRIPTION:文件中你得到的只是以下原因:
这是一个难题.
作为一个权宜之计,我写了一个新的rbundler软件包.它将项目依赖项安装到项目特定的子目录(例如<PROJECT>/.Rbundle)中,允许用户避免使用全局库.
我们已经rbundler在Opower上使用了几个月,并且已经看到内部软件包的开发人员工作流程,可测试性和可维护性方面的巨大改进.结合我们的内部软件包存储库,我们能够稳定十几个软件包的开发,以便在生产应用程序中使用.
常见的工作流程:
从R控制台:
库(rbundler)
束('.')
将安装所有依赖项./.Rbundle,并.Renviron使用以下内容创建文件:
R_LIBS_USER='.Rbundle'
Run Code Online (Sandbox Code Playgroud)
从此项目目录中运行的任何R操作都将遵循项目特定的库和包依赖项.请注意,虽然此方法使用包描述来定义依赖项,但它不需要具有实际的包结构.因此,rbundler无论是简单的脚本还是成熟的软件包,它都成为管理R项目的通用工具.
该packrat软件包正是为了实现以下目标:
在不影响全局 R 安装的情况下将任何必需的包安装到特定于项目的库中
它允许在不同的项目本地包库中安装相同包的不同版本。
尽管这个问题已经有 5 年历史了,但我还是要添加这个答案,因为在提出问题时这个解决方案显然还不存在(据我所知,packrat2014 年首次出现在 CRAN 上)。
更新(2019 年 11 月)
新的 R 包renv取代了packrat.