R中的有效编码

时间:2016-09-09 13:37:46

标签: r parallel-processing

我在" sample.txt"中有大量样本值。每行中的这些值是针对每个xi获取的,并在model-linux中运行。 目前,代码不是为了并行运行而编写的。 有没有办法通过使其并行运行或使用for循环的替代方法来减少运行时间。 我的代码是

 setwd('/phd/90-91')

    ptm <- proc.time()
    xxx = read.table('~/90-91/sample.txt');

    alls = dim(xxx);
    objs=vector()

    nse= numeric()
    rmse=numeric()
    revf=numeric()

    for (xi in 1:alls[1])
    {
      print(xi)
      system(sprintf("./shtran_cng_nlst.sh  %s", xi) )
      objs [xi] = xi
      system("./model-linux -f rundata.txt")
      sim <- read.table("/phd//90-91 /outputdischarge_sim_regulartimestep.txt",fill=TRUE,header = FALSE,skip=1)
      obs <- read.table("/phd/90-91/observeddisch.txt",fill=TRUE,header = FALSE,skip=1)
      nsesh[xi]= 1-{sum((obs[366:730,1]-sim[366:730,1])^2)/sum((obs[366:730,1]-mean(obs[366:730,1]))^2)}
      rmsesh[xi]=sqrt((1/365)*sum((obs[366:730,1]-sim[366:730,1])^2))
      revfsh[xi]=1-((sum(sim[366:730,1]))/(sum(obs[366:730,1])))

     save(nsesh,file="/phd/90-91/nse_she")
    save(rmsesh,file="/phd/90-91/rmse_she")
    save(revfsh,file="/phd/90-91/revf_she")

   write(nsesh,"/phd/90-91/nse_she.txt", ncolumns = 1, append = FALSE, sep="\t")
  write(rmsesh,"/phd/90-91/rmse_she.txt", ncolumns = 1, append = FALSE, sep="\t")
  write(revfsh,"/phd/90-91/revf_she.txt", ncolumns = 1, append = FALSE, sep="\t")

    }


    proc.time() - ptm

0 个答案:

没有答案