我在" 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