2017-05-22 9 views
0

큰 csv 파일 (17m 행)을 R에 가져 오는 데 문제가 있습니다. readr::read_csvdata.table::fread을 모두 사용해 보았습니다. . 이는 열 중 하나에 쉼표가 포함 된 텍스트가 있기 때문입니다. readLines으로 파일을 읽을 때, 텍스트 내의 쉼표는 이중 백 슬래시 앞에 있으므로 무시해야한다는 것을 알 수 있습니다. 그러나 패키지를 무시할 수는 없습니다 ... 어떤 제안이 있습니까? 예제는 다음과 같습니다R 대용량 csv를 쉼표로 가져옵니다. reader 또는 data.table에 이중 백 슬래시가 있습니다.

id,title 
1,great expectations 
2,great expectations\\, the sequel 
+0

데이터 몇 줄을 포함하십시오. –

+1

이 잘못된 파일을 생성 한 소프트웨어는 무엇입니까? 그 덕분에 –

답변

1

이 아름다운 솔루션이 아니라 각 라인의 첫 번째 쉼표를 교환 input과 CSV 파일을 미리 처리 쉘 명령을 전달하는 data.table::fread의 능력을 활용할 수 다른 구분자 : 나는 그것이 fread()에 전달되기 전에 밑줄로 각 행의 첫 번째 쉼표를 교환 sed을 사용하고이 예에서

library(data.table) 
fread(input = "sed 's/,/_/' foo.csv", sep = "_") 

## id        title 
## 1: 1     great expectations 
## 2: 2 great expectations\\\\, the sequel 

.

이것은 사용자가 sed을 사용할 수있는 유닉스 계열 환경을 사용한다고 가정합니다.

+0

. 내 파일에서는 작동하지 않았고 이유가 확실하지 않습니다 ... sed의//// '할 일을 설명 할 수 있습니까? – chrisjacques

+0

답변을 설명과 자격으로 업데이트했습니다. 데이터의 더 큰 하위 집합을 제공하고 코드 실행을 시도했을 때 일어난 일을 설명하면 도움이 될 것입니다. – aaronwolen

+0

나는 ... 불행히도 단지 첫 번째 쉼표를 대체하는 것은 내 파일 (미안하지만, 내 데이터의 하위 집합을 제공 할 수있는 방법을 모르겠다. \\의 모든 인스턴스를 밑줄로 대체하는 sed 명령? – chrisjacques