我正在分发一个需要其他包的R软件包。如果缺少任何包,我会得到(例如)以下错误:
我有代码来检查和安装whSample软件包中的依赖项,但是当R看到NAMESPACE中的library(whSample) Error: package or namespace load failed for ‘whSample’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]): there is no package called ‘dplyr’
import(dplyr)
时,在它到达这些代码之前就会失败。以下是调用软件包函数时的第一个代码块: is_installed <- function(mypkg) is.element(mypkg, installed.packages()[,1])
whInstall <- function(pkgNames){
for(pkg in pkgNames){
if(!is_installed(pkg)){
install.packages(pkg, repos="http://lib.stat.cmu.edu/R/CRAN")
}
suppressMessages(suppressWarnings(
library(pkg, character.only=T, quietly=T, verbose=F)))
}
}
whInstall(c("magrittr","tools","purrr","openxlsx","data.table","dplyr","glue"))```
How can I get R to do these checks without running afoul of NAMESPACE?
install.packages
将会安装所有包依赖项(如果它们在CRAN或指定的存储库中)。在一个包中不需要展示你所展示的代码。 - Roland#'@import dplyr
(和其它)。我需要做更多的事情吗? - pdw#' @importFrom
选择性地导入函数。) - Roland