我无法一次性加载R中的某些软件包,因此需要多次重复它。所以我需要加载所有这些包,直到它们完全加载。有没有一种方法可以编程重复加载,直到它们都成功加载?
library(biomaRt)
library(dplyr)
library(stringi)
library(GenomicFeatures)
library(Rsamtools)
library(foreach)
library(doMC)
library(doMC)
答案 0 :(得分:1)
我找到了一个很酷的方式:
如果抛出错误,R中的 try()函数将继续执行脚本。 library()函数加载一个包,如果不成功则抛出错误。
基本上,我设置了一个 while 循环,它尝试每五秒重新加载一次包,直到它们都已成功加载。我添加了一些很好的诊断信息。
myPackages <- c("ggplot2", "stats", "zoo")
tryCount <- 0
while( !all(myPackages %in% (.packages())) ){
try(library(ggplot2))
try(library(stats))
try(library(zoo))
tryCount <- tryCount + 1
if( !all(myPackages %in% (.packages())) ){
cat(paste0("Failure: ", tryCount, "\n"))
cat("Failed to load: ")
cat(myPackages[ !myPackages %in% (.packages()) ])
cat("\n")
} else {
print(paste0("Success!"))
}
Sys.sleep(5)
}