hi all I am using r (2.15.2) in windows 7 32bit I want to execute an external program from r console. the program is a command line program which needs the following format to start C:/Users/.../dssp-2.0.4-win32.exe -i data_1.txt -o data_1.dssp I used the system command as: system ('C:/Users/.../dssp-2.0.4-win32.exe -i data.txt -o data.dssp') it worked. Now I want to use the program on a list of files, so for that I used a for loop and sprintf for (i in 1:10) { system ('C:/Users/.../dssp-2.0.4-win32.exe -i sprintf("data_%s.txt",i) -o sprintf("data_%s.dssp",i)') but I received the following error No such file Warning message: running command 'C:/Users/.../dssp-2.0.4-win32.exe -i sprintf("data_%s.txt",i) -o sprintf("data_%s.dssp",i)' had status 1 SO, what is my mistake? and is there a way to update the input file name based on the for loop counter Best Regards,
I think what you want is something like this system(sprintf('C:/Users/.../dssp-2.0.4-win32.exe -i data%d.txt -o data%d.dssp', i, i)) On Fri, Feb 15, 2013 at 12:33 PM, Esam Tolba <eatolba at gmail.com> wrote:> hi all > I am using r (2.15.2) in windows 7 32bit > I want to execute an external program from r console. the program is a > command line program which needs the following format to start > C:/Users/.../dssp-2.0.4-win32.exe -i > data_1.txt -o data_1.dssp > I used the system command as: > system > ('C:/Users/.../dssp-2.0.4-win32.exe -i data.txt -o data.dssp') > it worked. > Now I want to use the program on a list of files, so for that I used a > for loop and sprintf > for (i in 1:10) { > system > ('C:/Users/.../dssp-2.0.4-win32.exe -i sprintf("data_%s.txt",i) -o > sprintf("data_%s.dssp",i)') > but I received the following error > No such file > Warning message: > running command 'C:/Users/.../dssp-2.0.4-win32.exe > -i sprintf("data_%s.txt",i) -o sprintf("data_%s.dssp",i)' had status 1 > > > SO, what is my mistake? and is there a way to update the input file > name based on the for loop counter > > Best Regards, > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it.
Hello, In what follows I've used print(), not system(). The trick is to use paste0() to form the command. for (i in 1:10) { cmd <- paste0('C:/Users/.../dssp-2.0.4-win32.exe -i ', sprintf("data_%s.txt",i), ' -o ', sprintf("data_%s.dssp",i)) print(cmd) } Hope this helps, Rui Barradas Em 15-02-2013 17:33, Esam Tolba escreveu:> hi all > I am using r (2.15.2) in windows 7 32bit > I want to execute an external program from r console. the program is a > command line program which needs the following format to start > C:/Users/.../dssp-2.0.4-win32.exe -i > data_1.txt -o data_1.dssp > I used the system command as: > system > ('C:/Users/.../dssp-2.0.4-win32.exe -i data.txt -o data.dssp') > it worked. > Now I want to use the program on a list of files, so for that I used a > for loop and sprintf > for (i in 1:10) { > system > ('C:/Users/.../dssp-2.0.4-win32.exe -i sprintf("data_%s.txt",i) -o > sprintf("data_%s.dssp",i)') > but I received the following error > No such file > Warning message: > running command 'C:/Users/.../dssp-2.0.4-win32.exe > -i sprintf("data_%s.txt",i) -o sprintf("data_%s.dssp",i)' had status 1 > > > SO, what is my mistake? and is there a way to update the input file > name based on the for loop counter > > Best Regards, > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >