2012-06-21 5 views
1

나는 R을 사용하고 있지만이 질문은 그와 관련이 없습니다. 반복 할 때마다 URL을 다운로드하는 루프를 작성했다고 가정 해 보겠습니다. 이 데이터를 저장하려고하므로 각 반복을 수행하거나 정보를 보유하고 매 반복마다 저장할 수 있습니다. 이 작업을 수행하기위한 일반적인 경험 법칙이 있습니까? 항상 파일을 열고 닫는 것이 얼마나 느린가요? 내가 생각하고있는 것은이루프에서 데이터를 다운로드하는 빈도, 해당 정보를 저장하는 빈도

data <- list() 
length(data) <- 20 
j <- 1 
for (i in 1:1000) { 
    data[j] <-url("http://...i") 
    j <- j+1 
    if (j = 20) {j <-1} 
    if (i %% 20 == 0) { 
     write.table(data, file="file") 
     } 
    } 
+0

두 번째 코드에서 'j'는 무엇입니까? – huon

+1

'write.table'이 아닌'saveRDS'를 사용하여 직렬화 된 데이터 버전을 저장해도 괜찮습니까? 이것은 훨씬 더 빠를 것입니다. 또한'url' 주소를 아십니까? ('i'로 끝나는가?) – mnel

+0

데이터가 같은 클래스와 모양 (즉, 같은 필드를 가진 모든 데이터 프레임)을 반복 할 때마다 있습니까? – plannapus

답변

0

같은 모든 다운로드 한 데이터가 동일한 형태의 경우, 고유 한 파일에 append로 할 수 있습니다 대

for (i in 1:1000) { 
    data <- url("http://...i") 
    write.table(data, file="file") 
} 

인 경우에 당신이 할 수있는 각 반복마다 그렇게하십시오. 다음은 간단한 예입니다.

sites<-c("714A","715A","716A") 
for(i in 1:length(sites)){ 
    data<-read.table(file=paste("http://www.ngdc.noaa.gov/mgg/geology/odp/data/115/",sites[i],"paleomag.txt",sep="/"),sep="\t",header=TRUE) 
    #In this example i downloaded paleomagnetic data from deep sea drilling sites. 
    ifelse(i==1,h<-TRUE,h<-FALSE) #Here the idea is that we want to output the column names only the first time. 
    write.table(data,file="paleomag_leg115.txt",sep="\t",append=!h,col.names=h,row.names=FALSE) 
    }