我正在尝试遍历目录并读取列表中的所有文件。这些文件全部来自此处https://github.com/CSSEGISandData/COVID-19
上的同一github存储库。path = "~/Documents/Corona_Virus/COVID-19/archived_data/archived_daily_case_updates/"
setwd(path)
file.names<-list.files(path)
archived_DAYS<-lapply(file.names,read.csv,sep=",",header=T)
顺利起飞,然后
path2 = "~/Documents/Corona_Virus/COVID-19/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=",")
引发错误
“ read.table中的错误(文件=文件,标头=标头,sep = sep,引用=引用,:输入中没有行“
但是,两个目录中的文件类型都是.csv文件,它们的结构均相同。我不明白为什么每个文件都填充了数据后会引发该错误
要在R中本地读取文件,可以执行以下操作。
此时,当前的R工作目录是克隆的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()
,因此避免了使用read.csv()
读取非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
>