1

我正在使用 R,但这个问题并不特定于它。假设您编写了一些循环,在每次迭代时下载一个 url。您想保存此数据,因此您可以在每次迭代时保存该信息并在每第 n 次迭代时保存它。这样做有什么一般的经验法则吗?一直打开和关闭要写入的文件有多慢?我的想法是

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

与这样的东西相比

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")
      }
   }
4

1 回答 1

0

如果您下载的所有数据都具有相同的形式,您可能希望将append它们保存到一个唯一的文件中,在这种情况下,您可以在每次迭代时执行此操作。这是一个简短的例子:

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)
    }
于 2012-06-21T07:22:07.160 回答