如何解决一起将R中的本地库与先决条件一起加载
例如,我有一个本地broom
软件包,其中包含几个必备软件库,例如backports
。
install.packages("broom",lib=file.path(Sys.getenv("userprofile"),"desktop","project"))
我发现以下library
不会一起加载必要的先决条件。
library(broom,lib.loc=file.path(Sys.getenv("userprofile"),"project"))
Error: package or namespace load failed for ‘broom’:
.onLoad failed in loadNamespace() for 'pillar',details:
call: loadNamespace(name)
error: there is no package called ‘crayon’
我已经有了这些先决条件,因为install.packages
一起下载了它们。
backports
)之前,是否应该先加载所有必备库(例如broom
)?解决方法
我制作了此函数,该函数基本上加载了所传递软件包的依赖关系,现在您需要做的就是在加载broom
之前运行它,然后它将加载依赖关系。
# loads dependencies of passed packages
# can be used in two forms :
# load.dep(broom,tidyr)
#. load.dep("broom","tidyr")
load.dep <- function(...){
x <- as.list(substitute(...()))
stopifnot(length(x)>0)
x <- sapply(x,as.character)
avp <- available.packages()
pkgs <- unlist(strsplit(avp[x,c("Imports","Depends")],split=" ?(\\([^)]+?\\))?,?"),use.names=F)
invisible(lapply(pkgs[!grepl('^(\\n|R )',pkgs)],library,character.only=T))
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。