【问题标题】:Extra commas at end of lines causing error with read.csv and read.table行尾的额外逗号导致 read.csv 和 read.table 出错
【发布时间】:2018-06-22 00:50:34
【问题描述】:

我正在尝试将这个.csv file 读入 R。当我使用 read.csv 时,我要么得到与 row.names 相关的错误,要么列名与其原始列发生偏移。基于this post,我认为问题与每行末尾有一个额外的逗号有关。我在上一个问题的回复中找不到的是如何去掉行尾逗号。

我的解决方法是执行以下操作:

pmr <-read.csv("pubmed_result.csv", header = T, row.names = NULL)
colnames(pmr) <- c(colnames(pmr)[2:ncol(pmr)], "blank")
pmr <- pmr[1:ncol(pmr)-1]

这提供了预期的结果,但似乎有点不雅。有没有办法让 read.csv 或 read.table 忽略最后一个逗号?或者有没有办法使用 gsub 来修复 csv?

【问题讨论】:

  • 您可以尝试使用 data.table 包中的 fread 来读取您的文件吗?
  • fread 也读入数据,但名称偏移一。 read_csv 正确。

标签: r read.table read.csv


【解决方案1】:

您的评估是正确的,即结尾的 "," 导致了问题。准确地说,事实是您在数据行中有一个尾随",",但在声明列名的行中没有。

如果您不想像在上面的代码中那样手动解决问题,可以使用readr::read_csv

library(tidyverse);
df <- read_csv("pubmed_result.csv");
df;
    ## A tibble: 375 x 11
#   Title   URL    Description  Details  ShortDetails Resource Type  Identifiers
#   <chr>   <chr>  <chr>        <chr>    <chr>        <chr>    <chr> <chr>
# 1 Myoedi… /pubm… Zhang Y, Lo… Physiol… Physiol Rev… PubMed   cita… PMID:29717…
# 2 Cullin… /pubm… Papizan JB,… J Biol … J Biol Chem… PubMed   cita… PMID:29653…
# 3 Fusoge… /pubm… Bi P, McAna… Proc Na… Proc Natl A… PubMed   cita… PMID:29581…
# 4 Correc… /pubm… Long C, Li … Sci Adv… Sci Adv.  2… PubMed   cita… PMID:29404…
# 5 Single… /pubm… Amoasii L, … Sci Tra… Sci Transl … PubMed   cita… PMID:29187…
# 6 Requir… /pubm… Shi J, Bi P… Proc Na… Proc Natl A… PubMed   cita… PMID:29078…
# 7 Consid… /pubm… Carroll KJ,… Circ Re… Circ Res.  … PubMed   cita… PMID:29074…
# 8 ZNF281… /pubm… Zhou H, Mor… Genes D… Genes Dev. … PubMed   cita… PMID:28982…
# 9 Functi… /pubm… Kyrychenko … JCI Ins… JCI Insight… PubMed   cita… PMID:28931…
#10 Defici… /pubm… Papizan JB,… J Clin … J Clin Inve… PubMed   cita… PMID:28872…
## ... with 365 more rows, and 3 more variables: Db <chr>, EntrezUID <int>,
##   Properties <chr>

这将引发一堆警告,这些警告源于缺少/额外的尾随“,”,在这种情况下您可以忽略这些警告。请注意,列名已正确分配。

【讨论】:

  • tidyverse::read_csv 运行良好。谢谢!不幸的是,我没有足够的信誉来投票赞成您的答案。
  • @Josh 太好了,很高兴它成功了。您可以通过设置答案旁边的绿色复选标记来关闭问题。祝你工作顺利!
  • 谢谢,我不知道如何将问题标记为已回答。
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多