read.csv () в R ошибка «нет доступных строк» - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь пройти через каталог oop и прочитать все файлы в списке. Все эти файлы взяты из того же репозитория github, который можно найти здесь 1010 *

"Ошибка в read.table (file = file, header = header, sep = sep, quote = quote,: во входных данных нет доступных строк"

, однако типы файлов в обоих каталогах CSV-файлы, которые структурированы одинаково. Я не понимаю, почему выдает эту ошибку, поскольку каждый файл содержит данные

1 Ответ

1 голос
/ 24 марта 2020

Для локального чтения файлов в R можно сделать следующее:

  1. разветвить репозиторий COVID-19 в Github
  2. , клонировать репозиторий на компьютер, на котором вы ' Запустим RStudio / R
  3. в RStudio, создадим проект, начинающийся в каталоге root клонированного репозитория COVID-19

На данный момент текущий рабочий каталог R является root каталог клонированного репозитория Github. Следующий код извлечет все ежедневные архивные файлы и прочитает их в список фреймов данных.

# 
# archived days data
# 
theFiles <- list.files("./archived_data/archived_daily_case_updates",pattern="*.csv",full.names = TRUE)

dataList <- lapply(theFiles,read.csv,stringsAsFactors=FALSE)

Мы можем напечатать первые несколько строк данных из первого фрейма данных в результирующем списке следующим образом.

> head(dataList[[1]])
  ï..Province.State Country.Region    Last.Update Confirmed Deaths Recovered Suspected
1             Anhui Mainland China 1/21/2020 10pm        NA     NA        NA         3
2           Beijing Mainland China 1/21/2020 10pm        10     NA        NA        NA
3         Chongqing Mainland China 1/21/2020 10pm         5     NA        NA        NA
4         Guangdong Mainland China 1/21/2020 10pm        17     NA        NA         4
5           Guangxi Mainland China 1/21/2020 10pm        NA     NA        NA         1
6           Guizhou Mainland China 1/21/2020 10pm        NA     NA        NA         1
> 

Обратите внимание, что аргумент full.names = TRUE в list.files() необходимо включить путь в итоговый список имен файлов.

> # show path names in list of files
> head(theFiles)
[1] "./archived_data/archived_daily_case_updates/01-21-2020_2200.csv"
[2] "./archived_data/archived_daily_case_updates/01-22-2020_1200.csv"
[3] "./archived_data/archived_daily_case_updates/01-23-2020_1200.csv"
[4] "./archived_data/archived_daily_case_updates/01-24-2020_0000.csv"
[5] "./archived_data/archived_daily_case_updates/01-24-2020_1200.csv"
[6] "./archived_data/archived_daily_case_updates/01-25-2020_0000.csv"
>

Что вызвало ошибку в исходном сообщении?

Оригинальный автор спросил, почему код для ежедневных обновлений дел не удался в комментариях к моему ответу. Моя гипотеза состояла в том, что наличие README.md файла в подкаталоге приводило к сбою read.csv(). Так как мой ответ использовал pattern = '*.csv' в list.files(), он избегает чтения не-CSV-файла с read.csv().

Я запустил следующий код для проверки этой гипотезы.

# replicate original error
originalDirectory <- getwd()
path2 =paste0(originalDirectory, "/csse_covid_19_data/csse_covid_19_daily_reports")
setwd(path2)
daily_file_names<-list.files(path2)
daily_DAYS<-lapply(daily_file_names,read.csv,sep=",")

Я получил ту же ошибку, что и описанная в исходном посте.

> # replicate original error
> originalDirectory <- getwd()
> path2 =paste0(originalDirectory, "/csse_covid_19_data/csse_covid_19_daily_reports")
> setwd(path2)
> daily_file_names<-list.files(path2)
> daily_DAYS<-lapply(daily_file_names,read.csv,sep=",")
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  no lines available in input
> 

После добавления pattern = '*.csv' к list.files() код работает правильно.

> # use pattern = "*.csv"
> daily_file_names<-list.files(path2,pattern = "*.csv")
> daily_DAYS<-lapply(daily_file_names,read.csv,sep=",")
> head(daily_DAYS[[1]])
  ï..Province.State Country.Region     Last.Update Confirmed Deaths Recovered
1             Anhui Mainland China 1/22/2020 17:00         1     NA        NA
2           Beijing Mainland China 1/22/2020 17:00        14     NA        NA
3         Chongqing Mainland China 1/22/2020 17:00         6     NA        NA
4            Fujian Mainland China 1/22/2020 17:00         1     NA        NA
5             Gansu Mainland China 1/22/2020 17:00        NA     NA        NA
6         Guangdong Mainland China 1/22/2020 17:00        26     NA        NA
>
...