2013-08-22 5 views
-1

저는 250x250 매트릭스로 작업하고 있습니다. 그러나이를 계산하려면 많은 시간과로드가 필요합니다. 적어도 1 시간은 걸립니다.백그라운드에서 작업 실행 중 R

이 행렬을 R에 메모리에 저장할 수 있으므로 R을 열 때마다 이미 존재합니다.

이상적으로, R의 백그라운드에서 작업을 실행할 수 있는지 알고 싶습니다. 매트릭스를 가져 와서 재생할 수 없도록 한 시간을 기다려야합니다.

+0

'write.csv','save' – James

+1

또는 R. –

+1

에있는 작업 공간의 아이디어를 체크 아웃하십시오. 죄송합니다 ... 좀 더 명확히 할 수 있습니까? 250x250 매트릭스는 매일 3,000,000x20 테이블로 작업하고 있습니다. 시작시 250x250을로드 할 pb가 없으며 즉시 – statquant

답변

1

R을 열 때마다 파일을 계산하고 파싱 할 때 파일을 출력하는 것이 도움이 될 것입니다. computeMatrix() 함수 또는 스크립트를 작성하여 적절한 형식으로 저장된 행렬로 파일을 생성하십시오 . loadMatrix() 함수 나 스크립트를 작성하여 해당 파일을 읽고 사용하기 위해 행렬을 메모리에로드 한 다음 R을 시작하고 행렬을 사용하려고 할 때마다 loadMatrix를 호출하거나 실행하십시오.

백그라운드에서 R 작업을 실행하는 경우 명령 줄에서 "R CMD BATCH scriptName"구문으로 R 스크립트를 실행할 수 있으며 scriptName은 스크립트 이름으로 바뀝니다.

+0

몇 가지 예제 코드를 제공해 주시겠습니까? 당신이 의미하는 바를 이해하고 있기 때문에, 나는 그것을 어떻게 해야할지 모르겠다. – mynameisJEFF

+0

코드는 매트릭스의 형태에 달려있다. 그것이 단지 숫자의 매트릭스 인 경우 개인적으로 CSV 형식으로 출력 한 다음 read.csv() 함수를 사용하여 다시로드합니다. 행렬의 각 요소는 무엇입니까? –

+1

'writeMatrix <- 함수 (dat, 파일) write.csv (dat, file)'; 'readMatrix <- function (file) data.matrix (read.csv (file, row.names = 1))' – flodel

4

1) R을 닫을 때 R의 작업 공간을 저장할 수 있습니다. 일반적으로 R은 "작업 영역 이미지 저장 하시겠습니까?"라고 묻습니다. 당신이 그것을 닫을 때. "예"라고 대답하면 작업 공간을 ".Rdata"파일에 저장하고 새 R 인스턴스를 시작할 때로드합니다.

2) 더 안전한 옵션은 매트릭스를 명시 적으로 저장하는 것입니다. 어떻게 할 수있는 몇 가지 옵션이 있습니다. 옵션 중 하나는 RDATA 파일로 저장하는 것입니다 m이 매트릭스

save(m, file = "matrix.Rdata") 

입니다. 같은 작업 디렉토리에있는 경우

당신은

load("matrix.Rdata") 

로 언제든지 행렬을로드 할 수 있습니다.

3) R에 대한 백그라운드 컴퓨팅과 같은 옵션이 없습니다. 그러나 여러 개의 R 인스턴스를 열 수 있습니다. 한 인스턴스에서 계산을 수행하고 다른 인스턴스에서 다른 작업을 수행하십시오.

0

ff 패키지를 사용하고 행렬을 ff 객체로 저장하는 것이 더 나을 수도 있습니다. 즉, 실제 행렬이 효율적인 방법으로 디스크에 저장되면 새로운 R 세션을 시작할 때 전체 행렬을 메모리에로드하지 않고도 동일한 파일을 가리킬 수 있습니다. 행렬의 일부가 필요할 때 필요한 부분 만로드되므로 훨씬 빠릅니다. 전체 행렬을 메모리에로드해야하는 경우에도 텍스트 파일을 읽는 것보다 빠르게로드해야합니다.

+0

이 경우 매트릭스는 250 * 250입니다. 'ff'를 사용할 이유가 없습니다. – djhurio

+1

@djhurio, 250x250이 작고 언급 된 다른 방법이 제대로 작동한다는 것에 동의하지만, 원래의 포스터 나 다른 리더가 실제로 큰 매트릭스로 확장되면 어떻게 될까요? ff 솔루션은 확장 성이 좋습니다. –

+0

예,하지만 어쨌든 문제의 범위를 벗어납니다. – djhurio

관련 문제