行尾的额外逗号导致 read.csv 和 read.table 出错
Extra commas at end of lines causing error with read.csv and read.table
我正在尝试阅读这篇文章 .csv file into R. When I use read.csv, I either get errors related to row.names, or the column names are offset from their original columns. Based on 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?
您认为尾随 ","
导致问题的评估是正确的。准确地说,是在数据行中有尾随 ","
而不是在声明列名的行中。
如果您不想像在上面的代码中那样手动修复问题,您可以使用 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>
这将抛出一堆源自 missing/additional 尾随“,”的警告,在这种情况下您可以忽略这些警告。请注意,列名已正确分配。
我正在尝试阅读这篇文章 .csv file into R. When I use read.csv, I either get errors related to row.names, or the column names are offset from their original columns. Based on 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?
您认为尾随 ","
导致问题的评估是正确的。准确地说,是在数据行中有尾随 ","
而不是在声明列名的行中。
如果您不想像在上面的代码中那样手动修复问题,您可以使用 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>
这将抛出一堆源自 missing/additional 尾随“,”的警告,在这种情况下您可以忽略这些警告。请注意,列名已正确分配。