Дополнительные запятые в конце строк вызывают ошибку с read.csv и read.table

Я пытаюсь прочитать этот файл .csv в R. Когда я использую read.csv , я либо получаю ошибки, связанные с row.names, либо имена столбцов смещены относительно исходных столбцов. Основываясь на этом сообщении, я считаю, что проблема связана с наличием дополнительной запятой в конце каждого линия. Чего я не могу найти в ответе на предыдущий вопрос, так это того, как избавиться от запятых в конце строки.

Моя работа заключается в следующем:

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?


person Josh    schedule 22.06.2018    source источник
comment
Вы можете попробовать использовать пакет fread из пакета data.table для чтения вашего файла?   -  person MichaelChirico    schedule 22.06.2018
comment
fread также читает данные, но имена смещаются на единицу. read_csv понимает это правильно.   -  person Harlan Nelson    schedule 22.06.2018


Ответы (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>

Это вызовет кучу предупреждений, которые происходят из-за отсутствующего/дополнительного завершающего «,», которые вы можете игнорировать в этом случае. Обратите внимание, что имена столбцов назначены правильно.

person Maurits Evers    schedule 22.06.2018
comment
tidyverse::read_csv работал отлично. Спасибо! К сожалению, у меня недостаточно доверия, чтобы проголосовать за ваш ответ. - person Josh; 22.06.2018
comment
@ Джош Отлично, рад, что это сработало. Вы можете закрыть вопрос, установив зеленую галочку рядом с ответом. Удачи в работе! - person Maurits Evers; 22.06.2018
comment
спасибо, я не мог понять, как пометить вопрос как ответ. - person Josh; 22.06.2018