2014-10-14 2 views
1

이 차이가 read.tablefread 사이에있는 이유를 알고 싶습니다. 어쩌면 fread을 사용할 수있는 해결 방법을 알 수 있습니다. 동일한 목표를 수행하는 두 줄의 코드가 있습니다. 즉 파일을 읽습니다. freadread.table보다 빠르고 효율적으로 수행되지만, read.table은 동일한 데이터 세트에서 오류가 거의 발생하지 않습니다.R 해결 방법 : fread와 read.table

성공적인 READ.TABLE 접근

table <- read.table("A.txt",header=FALSE,sep = "|", fill=TRUE, quote="", stringsAsFactors=FALSE) 

FREAD 접근

table <- fread("A.txt",header=FALSE,sep = "|") 

FREAD 내가 탐구 고전적인 오류를 반환,

예상 9월 ('|')하지만 새로운 라인 또는 EOF는 데이터 읽기시 라인 57193의 필드 44를 끝냅니다.

처음에 read.tablefill=TRUE이 포함되지 않았고 파일을 읽지 않았을 때 유사한 오류라고 생각되는 것을 반환했습니다. Nmax가 9 월 12 월은, 인용, 건너 무엇 스캔 (파일, NLINES, na.strings에서

오류 : 7 호선 내가 오류가 있다고 생각하고 45 개 요소

이 없었다 문서에 따르면 fill은 다음을 허용합니다. TRUE이면 행의 길이가 같지 않으면 빈 필드가 암시 적으로 추가됩니다. fill=TRUE과 비슷한 해결 방법이있을 수 있습니다. fread 문제를 해결하려면

+0

프로그래머가 물어 어디에 문제가 http://stackoverflow.com/questions/25853575/fread-read-certain-row-as-implicitly-ordered-factor과 비슷한 것 같습니다 암묵적으로 읽기의 동일한 매개 변수에 관하여. – Aaron

+1

당신은 [this] (http://stackoverflow.com/questions/18597488/fill-option-for-fread) – user20650

+0

@ user20650을 읽었습니까? 당신이 대답을 찾은 것 같아요. 다른 사람들이이 다른 답변을 더 쉽게 찾을 수 있기 때문에 질문을 중복으로 표시하지 마십시오. – Aaron

답변

0

MATT DOWLE의 답변 : Fill option for fread

업데이트 : 수행 가능성이 매우 낮습니다. fread는 일반 구분 파일 (각 행의 열 수가 같은)에 최적화되어 있습니다. 그러나 sep2가 구현되면 불규칙한 파일을 목록 열 (각 셀 자체는 벡터)로 읽을 수 있습니다. read.csv가 수행 할 수있는 별도의 열에 채워지지 않습니다.

0

이 답변은 fread을 사용하여 data.table 지금 fill 수 있습니다.

https://stackoverflow.com/a/34197074/1569064

 
    fread(input, sep="auto", sep2="auto", nrows=-1L, header="auto", na.strings="NA", 
     stringsAsFactors=FALSE, verbose=getOption("datatable.verbose"), autostart=1L, 
     skip=0L, select=NULL, drop=NULL, colClasses=NULL, 
     integer64=getOption("datatable.integer64"),   # default: "integer64" 
     dec=if (sep!=".") "." else ",", col.names, 
     check.names=FALSE, encoding="unknown", quote="\"", 
     strip.white=TRUE, fill=FALSE, blank.lines.skip=FALSE, key=NULL, 
     showProgress=getOption("datatable.showProgress"), # default: TRUE 
     data.table=getOption("datatable.fread.datatable") # default: TRUE 
     )