实际问题
是否可以在需要/加载包后覆盖对包(重新)安装的阻止?
我知道,一旦包被使用,阻止“真正”重新安装到加载包的同一个库是非常有意义的。但我的用例有点不同
背景
我喜欢拥有一个“沙盒库”来测试自己的包的想法。除了要测试的包之外,这些沙箱库还包含干净的基础 R 安装的所有基础包以及一些必要的 contrib 包,以便我的整个包构建和测试框架能够正常工作(例如digest
,stringr
等等)。但是,我的框架从标准库加载了后者的包,然后需要将它们安装到沙箱库 - 这被阻止了。因此,我的问题是是否可以覆盖它,因为我并没有真正做人们在实施该块时所想到的事情。
插图
指定两个库的路径
lib <- file.path(R.home(), "library")
lib.sandbox <- file.path(tempdir(), "library")
创建沙盒库
dir.create(lib.sandbox, showWarnings=FALSE)
将包安装到标准库并加载它
install.packages("digest", lib=lib)
require("digest", lib.loc=lib)
然后也安装到沙盒库
> install.packages("digest", lib=lib.sandbox)
Warning: package 'digest' is in use and will not be installed
我的框架在加载某些也应该安装到沙盒库的包之后计算出某些东西,所以我不能将“安装到沙盒库”步骤放在初始加载步骤之前。