Ошибка в файле (con, "rb"): не удается открыть соединение External Hard Drive R - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть следующий блок кода:

# Obtain records from all patients
patientDir <- sort(list.dirs(path = "sample_images", full.names = TRUE, recursive = FALSE))

dataframes <- list()
i = 1
while(i<19){
  # Strip the patient out
  patient <- coreHist(patientDir[i])

  print("1")
  setwd("/Volumes/HUGE storage drive/")
  exists<- file.exists(patientDir[i])

  print(exists)

  # Extract the relevant information from the patient
  dicom <- readDICOM(patientDir[i])
  dicomdf <- dicomTable(dicom$hdr)  
  patient_id <- dicomdf$`0010-0020-PatientID`[1] 

  print("2")

  # Normalize their VX's
  sum<- sum(patient$histData$finalFreq)

  print("3")

  # Create the new VX's
  patient$histData$finalFreq_scaled <- (patient$histData$finalFreq/sum)

  print("4")

  # Add their ID
  patient$histData$patientid <- patient_id

  print("5")

  # Keep only the important columns
  patient$histData <- patient$histData[c("patientid", "Var1", "finalFreq_scaled")]

  print("6")

  # Add these dataframes to a list for better recall afterwards
  dataframes[[i]] <- patient$histData

  print("7")

  # Additional code to transpose and merge dataframes
  if(i == 1){
    wide_df <- patient$histData
  }else{
    wide_df <- rbind(wide_df,patient$histData )
  }

  print("8")

  print(paste(c("Patient", i), sep ="", collapse = "-"))

  i = i+1
}

Однако после (на первый взгляд случайного) числа итераций код завершается ошибкой сразу после строки «print (« 1 »)» со следующей ошибкой:

Error in file(con, "rb") : cannot open the connection

Рабочий каталог настроен на внешний жесткий диск, так как папка sample_images имеет размер 62 ГБ. Я подумал, что, возможно, было время ожидания соединения с R studio и моим внешним жестким диском, поэтому я попытался «оставаться активным» на моем компьютере, я также пытался сбросить рабочий каталог после каждой итерации, чтобы убедиться, что он может найти файл.

Когда у определенного пациента происходит сбой, я проверяю вручную, чтобы убедиться, что этот файл действительно существует, и он существует. Какие-нибудь мысли?

1 Ответ

0 голосов
/ 01 мая 2018

Я на самом деле не уверен, почему произошла ошибка, но чтобы исправить ее, я просто добавил оператор try:

  attempt <- 1
  while(is.null(dicom) && attempt <= 3){
    attempt <- attempt + 1
    try(
      dicom <- readDICOM(patientDir[i])
    )  
  }

Это действительно сработало.

...