如何运行r脚本的一部分,直到错误消失

时间:2016-03-22 02:39:05

标签: r

我无法一次性加载R中的某些软件包,因此需要多次重复它。所以我需要加载所有这些包,直到它们完全加载。有没有一种方法可以编程重复加载,直到它们都成功加载?

    library(biomaRt)
    library(dplyr)
    library(stringi)
    library(GenomicFeatures)
    library(Rsamtools)
    library(foreach)
    library(doMC)
    library(doMC)

1 个答案:

答案 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)

}