【问题标题】:EOF within quoted string warning when merging csv files合并csv文件时带引号的字符串警告中的EOF
【发布时间】:2021-10-22 11:41:32
【问题描述】:

我有 70 多个 CSV 文件,我正在尝试按行合并它们(它们都有相同的列)。我尝试使用以下代码将它们组合起来:

library(tidyverse)
library(plyr)
library(readr)
setwd("*\\data")
myfolder="test"
allfiles= list.files(path=myfolder, pattern="*.csv", full.names = T)
allfiles
combined_csv= ldply(allfiles, read.csv)

运行此代码后,我会收到一条警告消息:

Warning message:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string

看起来我丢失了一些行。我该如何解决这个问题?

【问题讨论】:

    标签: r csv import merge read.csv


    【解决方案1】:

    当其中一些具有一些“字符”元素而一些只是数字时,不同文件中的相同列可能会被读取为不同的类型。这是一种读取所有列指定为“字符”列的方法,rbind 元素,然后使用type.convert 根据其具有的值自动转换列类

    library(data.table)
    out <- rbindlist(lapply(list.files(path=myfolder, full.names = TRUE), 
           fread, colClasses = "character"))
    out <- type.convert(out, as.is = TRUE)
    

    【讨论】:

      【解决方案2】:

      试试这个:

      library(dplyr)
      library(readr)
      
      myfolder="test" 
      
      df <- list.files(path=myfolder, full.names = TRUE) %>% 
        lapply(read_csv) %>% 
        bind_rows 
      

      【讨论】:

      • 看起来这个方法对列的类很敏感。我收到此错误消息:'错误:无法组合 List Desig Agt 1 - CREA ID List Desig Agt 1 - CREA ID "' 看起来相同的列名在两个 Excel 表中具有不同的类,这就是我收到此错误的原因
      • 我不确定,但试试这个:df &lt;- list.files(path=myfolder, full.names = TRUE) %&gt;% type.convert(as.is = TRUE) lapply(read_csv) %&gt;% bind_rows
      • 不幸的是给出了同样的错误。当我扩展错误时,它显示:Can't combine List Desig Agt 1 - CREA ID` List Desig Agt 1 - CREA ID .`
      • 我希望我可以在这里分享数据以获得更多说明,但这真的很难,因为它们有很多 excel 文件
      • 试试:df &lt;- list.files(path=myfolder, full.names = TRUE) %&gt;% lapply(read_csv) %&gt;% bind_rows %&gt;% readr::type_convert()
      猜你喜欢
      • 2019-05-10
      • 2018-10-23
      • 2013-06-29
      • 2021-05-11
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多