readr::read_csv()-使用嵌套引号分析失败

readr::read_csv()-使用嵌套引号分析失败,r,readr,R,Readr,我有一个csv,其中一些列有一个带引号的列,其中包含另一个引号: 废话废话嵌套引号,它会生成解析失败。我不确定这是一个bug还是有一个论据来处理这个问题 Reprex文件或内容粘贴在以下位置: readr::read_csv~/temp/shittyquotes.csv >使用列规范解析: >科尔斯 >.default=col_double, >INSTNM=列字符, >ADDR=列字符, >城市=col_字符, >刺刀=col_字符, >ZIP=列字符, >CHFNM=列字符, >CHFTI

我有一个csv,其中一些列有一个带引号的列,其中包含另一个引号:

废话废话嵌套引号,它会生成解析失败。我不确定这是一个bug还是有一个论据来处理这个问题

Reprex文件或内容粘贴在以下位置:

readr::read_csv~/temp/shittyquotes.csv >使用列规范解析: >科尔斯 >.default=col_double, >INSTNM=列字符, >ADDR=列字符, >城市=col_字符, >刺刀=col_字符, >ZIP=列字符, >CHFNM=列字符, >CHFTITLE=col_字符, >EIN=列字符, >欧佩德=col_字符, >WEBADDR=列字符, >ADMINURL=col_字符, >FAIDURL=列字符, >APPLURL=col_字符, >ACT=col_字符, >IALIAS=列字符, >INSTCAT=列字符, >CCBASIC=列字符, >CCIPUG=列字符, >CCSIZSET=列字符, >卡内基=col_字符 > ... 还有两列 > >见规范。。。对于全列规格。 >警告:3次解析失败。 >行col应为实际文件 >2 IALIAS分隔符或引号C'~/temp/shittyquotes.csv' >2 IALIAS分隔符或引号D'~/temp/shittyquotes.csv' >2列59列100列“~/temp/shittyquotes.csv” >A tibble:2 x 59 >UNITID INSTNM地址城市刺刀拉链FIPS OBEREG CHFNM CHFTITLE > >1441238城市…1500…杜阿尔…加利福尼亚9101…68博士…主任 >2 441247通信…3800…模式…CA 9535…6 8受害者…主持… > ... 还有49个变量:GENTELE,EIN,OPEID, >OPEFLAG、WEBADDR、ADMINURL、FAIDURL、, >应用URL、扇区、ICLEVEL、控件、, >HLOFFER,UGOFFER,格罗弗,FPOFFER, >HDEGOFFR,德格兰特,HBCU,医院, >医疗、部落、地区、开放公共场所、法案、, >NEWID,Deathy,CLOSEDAT,CYACTIVE, >POSTSEC、PSEFLAG、PSET4FLG、RPTMTH、, >IALIAS、INSTCAT、CCBASIC、CCIPUG、, >CCIPGRAD、CCUGPROF、CCENRPRF、CCSIZET、, >卡内基大学、滕纳斯大学、兰德格恩特大学、INSTSIZE大学、, >CBSA、CBSATYPE、CSA、NECTA、DFRCGID 由v0.2.1于2018年12月4日创建

以下是csv内容:

UNITID、INSTNM、ADDR、CITY、Stucher、ZIP、FIPS、OBEREG、CHFNM、CHFTITLE、GENTELE、EIN、OPEID、OPEFLAG、WEBADDR、ADMINURL、FAIDURL、APPLURL、SECTOR、ICLEVEL、CONTROL、HLOFER、UGOFER、GROFFER、FPOFER、HDEGOFFR、DEGRANT、HBCU、医院、医疗、部落、地区、开放公共、ACT、NEWID、DEATYR、DEATYR、CLOSDAT、CYACTIVE、POSTSEC、PSEFLAG、PSEFLAG、PSET4FLG、RPMTH、IAAS、INSTCCAT、CCBASIC、CCPUG、CCIPGRAD、,CCUGPROF、CCENRPRF、CCSIZSET、卡内基、天宇、兰德格恩特、INSTSIZE、CBSA、CBSATYPE、CSA、NECTA、DFRCGID 加利福尼亚州杜阿尔特东杜阿尔特路1500号希望城生物科学研究生院,邮编:91010-3000,6,8,主任阿瑟·里格斯博士,邮编:626301829395343221003592400,1,gradschool.coh.org,2,1,2,9,2,2,1,2,10,1,2,-2,2,2,21,1,A,-2,-2,-2,-1,1,1,25,-2,-2,-2,7,-2,-3,1,2,131100,1348,-2198 社区商业学院441247,地址:加利福尼亚州莫德斯托市麦克亨利大道M座3800号,邮编:95356-1569,6,8,Victor L.Vandenberghe,校长,2095293648484-823003615300,7,www.communitybusinesscollege.edu,www.communitybusinesscollege.edu,www.cbc123.com,www.123.com,9,3,3,1,1,2,2,2,2,2,12,1,1,1,A,-2,-2,-2,-2,-3,-3,-,-3,-3,2,2,1,33700,1,-2,-2,71 441256,设计美容学院,加利福尼亚州帕索·罗伯斯第24街715号,93446,6,8,莎伦·斯金纳,管理员,8052378575800020303646300,1,designsschool.com,9,3,3,2,1,2,2,0,2,2,2,13,1,A,-2,-2,-2,-1,1,1,1,2,6,-3,-3,-3,-3,-3,-2,2,46,-2,020
吉姆·海斯特给出了这个答案:


您需要使用escape\u double=FALSE参数来读取\u delim。这不是read_csv的一部分,因为excel样式的csv通过将内部引用加倍来避免内部引用。

Jim Hester提供了以下答案:

您需要使用escape\u double=FALSE参数来读取\u delim。这不是read_csv的一部分,因为excel样式的csv通过将内部引用加倍来逃避它们。

数据。表的fread对文件的解析很好。。。它会抛出有关引号的警告,但您可以忽略它

library( data.table )
data.table::fread("./temp.csv" )
警告信息: 在data.table::fread./temp.csv中: 发现并解决了前100行中的不正确引用。如果字段未加引号,例如字段分隔符未出现在任何字段中,请尝试quote=以避免出现此警告

data.table的fread可以很好地解析文件。。。它会抛出有关引号的警告,但您可以忽略它

library( data.table )
data.table::fread("./temp.csv" )
警告信息: 在data.table::fread./temp.csv中: 发现并解决了前100行中的不正确引用。如果字段未加引号,例如字段分隔符未出现在任何字段中,请尝试quote=以避免出现此警告