2016-12-08 1 views
0

나는 1000 개의 축구 시즌을 시뮬레이션하고 결과를 분석하는 연구 프로젝트에 대한 대규모 시뮬레이션을 수행하고 있습니다. 계절이 여러 노드에 퍼지기 때문에 나중에 출력 데이터를 파일에 저장하여 나중에 액세스 할 수있는 쉬운 방법이 필요합니다. 노드가 끝날 때를 제어 할 수 없기 때문에 같은 파일에 동시에 쓰기를 시도 할 수는 없지만 모두 다른 파일에 저장하면 모든 파일을 집계하는 방법이 필요합니다. 데이터를 나중에 쉽게. 생각?큰 시뮬레이션의 결과를 R에 저장하려면 어떻게해야합니까? (다중 노드, 안전한 액세스)

+0

을 결합하는 다음? –

+0

좋은 질문입니다. 슈퍼 컴퓨터에는 24 개의 프로세서가있는 많은 기계가 있습니다. 한 대의 컴퓨터에서 또는 여러 대의 컴퓨터에서 시뮬레이션을 수행 할 것인지 잘 모르겠습니다. – jntrcs

+0

@jntrcs 모든 노드가 액세스 할 수있는 공통 저장 영역이 있습니까? 그렇다면 적절한 폴더 구조를 결정하고 개별 시뮬레이션의 결과를 단일 드라이브의 해당 폴더에 저장할 수 있습니다. 아래에 게시 한 코드는이 시나리오에서 작동합니다. – Gandalf

답변

0

이 질문이 이미 제기되었는지 여부를 모르겠습니다. 그러나 여기에 내가 연구에서하는 것이있다. 당신은 파일 이름을 통해 루프를 할 수 있고 위의 코드는 모든 파일을 다른 폴더에 있지만 같은 파일 이름으로 저장되어 있다고 가정합니다 그래서

require(data.table) 
dt1 <- data.table() 
for (i in 1:100) { 
    k <- paste0("C:/chunkruns/dat",i,"/dt.RData") 
    load(k) 
    dt1 <- rbind(dt1,dt) 
} 

agg.data <- dt1 
rm(dt1) 

처럼 하나의 객체로 집계.

아니면, 당신이 사용할 수있는 패턴에 일치하는 파일 경로를 파악하고 그들에게 "노드"여러 물리적 시스템을 의미합니까함으로써

require(data.table) 
# Get the list of files and then read the files using read.csv command 
k <- list.files(path = "W:/chunkruns/dat", pattern = "Output*", all.files = FALSE, full.names = TRUE, recursive = TRUE) 
m <- lapply(k, FUN = function (x) read.csv(x,skip=11,header = T)) 
agg.data <- rbindlist(m) 
rm(m) 
관련 문제