R中的“ read.csv(),输入中无行”错误

问题描述 投票:0回答:1

我正在尝试遍历目录并读取列表中的所有文件。这些文件全部来自此处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 lapply read.csv
1个回答
1
投票

要在R中本地读取文件,可以执行以下操作。

  1. 在Github中分叉COVID-19存储库
  2. 将存储库克隆到将运行RStudio / R的计算机上
  3. 在RStudio中,从克隆的COVID-19存储库的根目录开始创建一个项目

此时,当前的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
>
© www.soinside.com 2019 - 2024. All rights reserved.