Для локального чтения файлов в R можно сделать следующее:
- разветвить репозиторий COVID-19 в Github
- , клонировать репозиторий на компьютер, на котором вы ' Запустим RStudio / R
- в 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
>