使用系统从matlab到R的翻译(sprintf())

时间:2017-05-21 15:58:35

标签: r matlab

我正在尝试将以下matlab代码翻译为R:

clear all
nsta = [1,2,3];
npx  = [2,3,4,5];
npu  = [2,3,4,5];
nmax = 2500;
nome = 'MODEL1b';
system(sprintf('del %s.log',nome));
nfiles = 0;
for k = 1:length(nsta)
    for i = 1:length(npx)
        for j = 1:length(npu)
            nx = nsta(k);
            npar = (npx(i)^nx)*npu(j);
            if (npar < nmax)
                nfiles = nfiles+1;
                system(sprintf('copy %s%d%d%d.txt  %s.txt',nome,nx,npx(i),npu(j),nome));
                system(sprintf('copy input%d%d%d.txt  input.txt',nx,npx(i),npu(j)));
                system(sprintf('copy template%d%d%d.txt template.txt',nx,npx(i),npu(j)));
                tic;
                system(sprintf('RFuzzy %s',nome));
                time = toc;
                fprintf('Arquivo: %d    Config: %d%d%d    Time: %f',nfiles,nx,npx(i),npu(j),toc);
                system(sprintf('copy min.txt min%d%d%d.txt',nx,npx(i),npu(j)));
            end
        end
    end
end

我在R中尝试了以下代码:

rm(list = ls())
nsta <- c(1,2,3)
npx <- c(2,3,4,5)
npu <- c(2,3,4,5)
nmax <- 2500
nome <- "MODEL1b"
system(sprintf('del %s.log', nome))
nfiles <- 0
for(k in 1:length(nsta)){
  for(i in 2:length(npx)){
    for(j in 2:length(npu)){
      nx <- nsta[k]
      npar <- (npx[i]^nx)*npu[j]
      if(npar < nmax){
        nfiles <- nfiles + 1
        system(sprintf('copy %s%d%d%d.txt  %s.txt',nome,nx,npx[i],npu[j],nome))
        system(sprintf('copy input%d%d%d.txt  input.txt',nx,npx[i],npu[j]))
        system(sprintf('copy template%d%d%d.txt template.txt',nx,npx[i],npu[j]))
        system(sprintf('RFuzzy %s',nome))
        fprintf('Arquivo: %d    Config: %d%d%d    Time: %f',nfiles,nx,npx[i],npu[j])
        system(sprintf('copy min.txt min%d%d%d.txt',nx,npx[i],npu[j]))
      }
    }
  }
}

但是当它运行第七行时,它给了我以下建议

Warning message:
running command 'del MODEL1b.log' had status 127

显然,它没有在第七行中运行我的代码。有任何帮助正确翻译吗?

0 个答案:

没有答案