我正在尝试读取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
答案 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))
编辑:请注意,在这种情况下,dat
是list
是正常的(建议),因为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的数据帧...
编辑:聊天后,问题与文件的绘制和聚集有关,与阅读无关,问题得以解决