当前位置: 首页 > 知识库问答 >
问题:

读取R中的多个文件时出现问题?

薛涛
2023-03-14

我正在尝试读取1500 csv文件,但我收到以下错误。

读取时出错。表(file=file,header=header,sep=sep,quote=quote,:不允许重复的“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个答案

丘畅
2023-03-14

fread来自数据。表更健壮。

试试吧

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

您的一些文件也可能不在中。csv格式。尝试添加:

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

或者,如上所述,选项row.names=NULL可以帮助dat

如果数据是非结构化的,请尝试 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…

编辑:经过交谈,问题与文件的绘制和聚合有关,而不是读取,问题得到了解决

 类似资料:
  • 我在读取R中的txt文件时遇到了一些问题,我认为该文件是由行尾问题创建的。我有一个包含两列的数据帧:第一列包含格式为__label__1234的标签,第二列是一个文本字符串(出于隐私原因,我无法共享实际文本,但它可能类似于“我在麦道工作”)。我首先使用write。表将此信息存储在文本文件中 然后我稍后尝试将该文本文件读回R,我得到了不希望的结果。 数据出来看起来类似于 当我渴望的是 知道我可以在读

  • 我正在实现一个从s3获取文件、读取并删除它的路由。问题是删除后继续搜索文件并进入错误,我不明白为什么路由不停止。 这是我的

  • 我试图分块读取输入流并写入文件以避免内存问题,我接收json格式的数据,并使用以下代码写入文件。 我的问题是,大多数json都写得很好,虽然其中一些包含损坏的数据,但我不确定我是否正确地将CharBuffer与BufferedReader一起使用,我观察到的另一件事是,对于少量数据,它正确地将CharBuffer写入文件,当我从服务器接收到更大的数据(大约2MB的输入流-不是很大)时,我通常会遇到

  • 我是Python新手,一直在关注我在网上找到的关于解决中国邮递员问题的教程。 我上传了所需的CSV文件,但每当我试图定义用于打印的节点位置数据结构时,它总是说“KeyError:'X”“”,这是我的CSV文件的标题之一 一位朋友告诉我,可能的问题是CSV文件中有空格,但我不确定如何解决这个问题。 我试过使用在线教程中的文件,效果很好,所以我不确定我做错了什么。 是打印(df)运行时得到的输出类型

  • 问题内容: 我正在尝试读取目录中的所有文件(+10.000),但是当我处理约1400个文件时,出现“打开的文件太多”错误。我已经向垃圾收集器添加了一个明确的调用,但这似乎并不能解决我的问题。我检查了ioutil软件包的源,并且ReadFile在内部使用(按预期方式)。那么,这里出了什么问题? 我知道大约2年前有一个类似的问题,但这对我的问题没有有用的答案。 问题答案: 您可能要考虑使用filepa