2012-04-12 4 views
-1

아래 코드는 한 폴더에서 1 년 동안 여러 바이너리 (365) 파일을 읽고 반복하는 코드입니다. 실제로 저는 수년 동안 많은 폴더를 보유하고 있습니다. 한 폴더에는 2000 년의 365 개의 파일이 있고 다른 폴더에는 2001 년의 365 개의 파일이 있습니다.R의 다른 폴더에서 여러 바이너리 파일을 읽으려면 어떻게해야합니까?

내 질문은 어떻게 한 해에서 다른 해 (한 폴더에서 다른 폴더로)를 반복 할 수 있습니까?

setwd("C:\\PHD\\Climate Data\\Wind\\") 
listfile<-dir() 
for (i in c(1:365)) { 
    conne <- file(listfile[i], "rb") 
    file<- readBin(conne, integer(), size=2, n=360*720, signed=T) 
    file<-file-273.15 # 
    close(conne) 
    to.write = file(paste("C:\\PHD\\Climate Data\\Out\\Temperature_",i,".dat",sep=""),"wb") 
    writeBin(file, to.write) 
    close(to.write) 
} 
+1

도움말을 얻을 확률을 높이려면 ([this one] (http://stackoverflow.com/a/10090849/903061)와 같이) 도움이 된 과거 답변을 "수락"해야합니다. 대답의 왼쪽. – Gregor

+0

이전 질문의 중복 http://stackoverflow.com/questions/10032052/how-do-i-read-multiple-binary-files-in-r –

+0

사실, 전에이 질문에 대답했습니다 ... http : //stackoverflow.com/questions/10032052/how-do-i-read-multiple-binary-files-in-r –

답변

0

가 당신이 취할 필요 여러 단계 : 당신은 디렉토리 strucutre에있는 파일의 목록을 만들 수 list.files을 사용할 수 있습니다

  • . 전체 트리를 탐색하려면 recursiveTRUE으로 설정하고 full.namesTRUE으로 설정하여 서브 디렉토리를 포함한 파일의 이름을 가져 오십시오.
  • 이 파일 목록을 읽은 후에는 ldply 양식을 사용하여 plyr 패키지를 만들어 모든 파일을 가져옵니다.

    list_of_files = list.files("datadir", recursive = TRUE, full.names = TRUE) 
    dat = l_ply(list_of_files, function(fname) { 
        dum_data = readBin(fname) 
        writeBin(dum_data) 
        }) 
    

    dat 이제 데이터 플러스 관련 시간을 포함하는 data.frame 될 것입니다 :

마지막으로, 모든 데이터를 읽고 (안된 의사) 코드 예제 같은 것을 보인다. 귀하의 예제에 맞게 작동 시키려면 원하는 기능으로 기능을 대체하십시오.

+0

고마워요. 그러나, 그것은 조금 복잡합니다. 나는 그것을 분명히 이해하지 못했습니다. 그래서 지금 당신이 작성한이 글에 위의 루프를 어떻게 삽입합니까? 나는 이것이 당신이 의미하는 바를 정말로 이해하지 못했습니다. (예를 들어 당신이 원하는대로 그 기능을 바꾸기 만하면됩니다). – hkfidd

+0

알고있는 코드 비트는 for 루프 안에 있으며 함수에 넣고 plyr에 사용할 수 있습니다. plyr이 일반적으로 작동하는 방법에 대한 자세한 내용은 작성자가 http://www.jstatsoft.org/v40/i01에서 작성한 문서를 참조하십시오 –

+0

더 가까운 사례를 –

관련 문제