Как я могу проверить, является ли файл zip или нет в R? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть тонны таких файлов:

temp1 <- tempfile()

temp2 <- tempfile()

download.file("https://my.pgp-hms.org/user_file/download/3658", temp1)

download.file('https://my.pgp-hms.org/user_file/download/3671', temp2)

Один текст (размер 16,1 МБ, другой - 5,6 МБ).

Посоветуйте, пожалуйста, как я могу проверить это на лету? Это общедоступный набор данных, и я не могу сказать авторам изменить способ его сохранения пару лет назад.

Я пытался summary(file(filename))$class, но это не помогло мне.

Я прочитал здесь, на StackOverFlow, что read.table может это сделать, на самом деле это возможно, но когда он заархивирован, я получаю бред.

1 Ответ

2 голосов
/ 21 марта 2019

Мне не известны какие-либо встроенные функции R для этого, но вы можете попробовать что-то похожее на это.Это просто небольшая пользовательская функция, в которой она пытается перечислить файлы, содержащиеся в zip-файле, если она может перечислить файлы, она возвращает значение TRUE.Если он сталкивается с ошибкой, то файл не может быть разархивирован, и он возвращает значение FALSE.Это не на 100% точно, так как если вы тестируете что-то вроде файла xlsx, вы получите ложное срабатывание.

is.zip <- function(filepath){
  result <- tryCatch({
              unzip(filepath, list = TRUE)
              return(TRUE)
            }, error = function(e){
              return(FALSE)
            })
  return(result)
}

is.zip(temp1)
is.zip(temp2)
...