[R] paste? 'cmd /c "c:\\pheno\\whap --file c:\\pheno\\smri --alt 1"'

Marc Schwartz (via MN) mschwartz at mn.rr.com
Mon Sep 25 20:39:42 CEST 2006


On Mon, 2006-09-25 at 18:58 +0200, Boks, M.P.M. wrote:
> Dear R users,
>  
> This command works (calling a programm -called whap- with file specifiers etc.):
>  
> >system('cmd /c "c:\\pheno\\whap --file c:\\pheno\\smri --alt 1 --perm 500"', intern=TRUE)
>  
> Now I need to call it from a loop to replace the "1" by different number, however I get lost using the quotes:
>  
> I tried numerous versions of:
>  
> >i<-1
> >system(paste(c("'cmd /c "c:\\pheno\\whap --file c:\\pheno\\smri --alt", i, " --perm 500"'", sep="" )), intern=TRUE)
>  
> However no luck! I would be gratefull for any help.
>  
> Thanks,
>  
> Marco

You need to escape the quote (") chars in the paste()d string so that
they get passed to your command properly. Also, you don't want to use
c() within the paste() function, as the paste() function already
concatenates the component vectors.

Note:

i <- 1

> paste("'cmd /c "c:\\pheno\\whap --file c:\\pheno\\smri --alt", i,  " --perm 500"'", sep="")
Error: syntax error in "paste("'cmd /c "c"

R sees the double quote before the second 'c' as the end of the string:

  "'cmd /c "


Now use "\" to escape the internal quotes:

> paste("'cmd /c \"c:\\pheno\\whap --file c:\\pheno\\smri --alt ", i,  " --perm 500\"'", sep="")
[1] "'cmd /c \"c:\\pheno\\whap --file c:\\pheno\\smri --alt 1 --perm 500\"'"


Use '\' to escape each of the double quotes within the string, so that R
can differentiate string delimiters versus characters within the string.

HTH,

Marc Schwartz



More information about the R-help mailing list