在R中读取多功能文件时出现问题?

时间:2018-10-22 12:36:25

标签: r

我正在尝试读取1500个csv文件,但出现以下错误。

  

read.table中的错误     不允许重复的“ row.names”

代码:

fi<-list.files("C:/Users/Desktop/DL/odi_csv_male",full.names=T)
dat<-lapply(fi,read.csv)

但是当单独打开并保存文件时,我可以读取文件。但是由于有1500个文件,我需要手动进行操作。任何帮助将不胜感激吗?

The file contains                                                                           version 1.3.0                           
    info    team    Ireland                     
    info    team    England                     
    info    gender  male                        
    info    season  2006                        
    info    date    6/13/2006                       
    info    venue   Civil Service Cricket Club, Stormont                        
    info    city    Belfast                     
    info    toss_winner England                     
    info    toss_decision   bat                     
    info    player_of_match ME Trescothick                      
    info    umpire  R Dill                      
    info    umpire  DB Hair                     
    info    match_referee   CH Lloyd                        
    info    winner  England                     
    info    winner_runs 38                      
    ball    1   0.1 England ME Trescothick  EC Joyce    DT Johnston 0   0
    ball    1   0.2 England ME Trescothick  EC Joyce    DT Johnston 0   0
    ball    1   0.3 England ME Trescothick  EC Joyce    DT Johnston 0   4

1 个答案:

答案 0 :(得分:1)

fread中的

data.table是更强大的IMO。

尝试

library(data.table)
dat<-lapply(fi,fread)

您的某些文件可能不是.csv格式,也可能会发生。尝试添加:

fi<-fi[grepl(".csv",fi)]

或者,正如所评论的,选项row.names=NULL可以帮助dat<-lapply(fi,function(x) read.csv(x, row.names=NULL))

如果数据是非结构化的,请尝试使用fill=T

dat<-lapply(fi,function(x) fread(x, fill=T))

编辑:请注意,在这种情况下,datlist是正常的(建议),因为dat由许多data.frames组成。尝试使用[[]]为列表正确建立索引。 如果您真的不想要列表,可以使用:

for(i in 1:length(fi)) {
 name <- paste0("dat",i)
 myvar <- data.frame(fread(fi[i], fill=T))
 assign(name,myvar, .GlobalEnv)
}

之后,您将有许多名为dat1,dat2的数据帧...

编辑:聊天后,问题与文件的绘制和聚集有关,与阅读无关,问题得以解决