2012-10-24 6 views
0

R에서 FORTRAN 프로그램을 호출하고 FORTRAN의 출력 파일을 분석하고 있는데, 이것은 약간 큽니다 (반복 당 약 50M). 각 반복마다 약 50 초가 걸리며, read.table 명령은 42 초가 걸립니다. 이 프로그램을 10 만 번 반복해야하므로 속도를 높이는 더 좋은 방법이 있는지 궁금합니다.빠른 방법으로 텍스트 파일을 가져올 수 있습니까?

예를 들어 FORTRAN이 모든 것을 메모리에 저장하고이를 R로 전달할 수 있습니까?

감사합니다.

+1

read.table 호출을 최적화 했습니까? http://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r – mnel

+0

@mnel : 먼저 확인해 보겠습니다. 감사! –

답변

4

절대적으로이 파일을 Fortran에서 이진 파일로 작성한 다음 매우 빠른이 될 R에서 readBin()을 통해 읽습니다. 하지만 endianness, 4 대 8 바이트 부동 소수점을 확인하십시오.

당신이 테스트 라이브러리를 원하는 경우, 예를 들어 RProtoBuf 등 다양한 직렬화 라이브러리로 보면 확실하지 포트란 바인딩을 얼마나 많은하지만 ...

편집 : 당 프로토콜 버퍼 및 포트란과 어떤 행운 없다 add-ons page. 어쩌면 hdf5와 같은 과학 형식이 더 나을 것입니다.

+0

제안 해 주셔서 감사합니다. 나는 그 도서관들을 조사 할 것이다. –

+0

'readBin()'은 기본 R입니다. 우리는 (큰) 행렬을 이동 시키지만, 메타 데이터 뒤에 짧은 헤더를 쓰고 그 뒤에 데이터를 쓰려고합니다. C/C++뿐만 아니라 R에서도 투명 gzip 지원을받을 수 있습니다. –

+0

이 바이너리 접근법에 익숙하지 않습니다. 그래서 그것은 문자와 숫자의 결합 인 출력 파일을 위해 작동해야합니다, 맞습니까? –

관련 문제