R - цикл через каталог выдает ошибку, но я не знаю, где (попробуйте и поймать) - PullRequest
0 голосов
/ 15 января 2019

У меня есть цикл, который должен принимать все файлы, которые соответствуют указанному Regex. Однако некоторые файлы, очевидно, не имеют правильного количества столбцов во всех строках. Поэтому цикл вылетает. Теперь я хочу выяснить, какие файлы вызывают эти ошибки. Есть сотни файлов, но только некоторые из них вызывают эту ошибку. Я знаю из Java, что теперь я бы попытался составить предложение try-catch и напечатать имя файлов, чтобы найти их, посмотреть и стереть / изменить их. Я не могу иметь дело с этим в R, хотя:

#PATH WITH ALL FILES
files <- list.files(path="/Users/Test/Trackingpoint", 
pattern="Trackingpoint.*\\.csv\\.gz", full.names=TRUE, recursive=FALSE)

Trackingpoint_Tables <- 
  tryCatch({
    lapply(files, function(x) {
      a <- read.table(gzfile(x), sep = "\t", header = TRUE)
    })
  }, warning = function(w) {
    print(w)
  }, error = function(e) {
    print(e)  
    })

Как вы знаете, в w и e у меня есть не сам файл, а ошибка. Как я могу напечатать имя файла и, соответственно, любую другую информацию из самого файла? Я хочу, чтобы мой код игнорировал ошибки и просто продолжал, но сообщал мне, где происходит эта ошибка (какой файл). Прямо сейчас, это только говорит:

<simpleError in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,     nmax = nrows, skip = 0, na.strings = na.strings, quiet = TRUE,     fill = fill, strip.white = strip.white, blank.lines.skip = blank.lines.skip,     multi.line = FALSE, comment.char = comment.char, allowEscapes = allowEscapes,     flush = flush, encoding = encoding, skipNul = skipNul): line 24610 did not have 44 elements>

1 Ответ

0 голосов
/ 15 января 2019

Достаточно простого изменения с read.table на read.csv и fill=TRUE.

...