[GRASS-stats] Passing a parameter from R to r.mapcalc ?

Roger Bivand Roger.Bivand at nhh.no
Tue Jan 20 13:45:39 EST 2009


On Tue, 20 Jan 2009, Agustin Lobo wrote:

> Hi!
>
> I have an script in R that mostly controls the
> flow of grass commands through system()
> I've got stuck at:
>
> for (k in mistat[,1]){
> 		system("r.mapcalc 'mancha = if(manchas.clmp==k,1,0)'")
>
>
> is there any way I could pass the value of k to r.mapcalc?
> I was thinking on using the shell through system, something like
> for (k in mistat[,1]){
> 		system("set k = @1")
> 		system("r.mapcalc 'mancha = if(manchas.clmp==$k,1,0)'")
>
> but do not get thru,
> (perhaps I'm mixing my memories of the csh and the Bourne shell...)

Please don't cross-post - people may not be subscribed to both lists and 
this may break threads.

The answer is paste(), or possibly a formatting function:

cmd <- paste("r.mapcalc \'mancha = if(manchas.clmp==", formatC(k, ...),
   ",1,0)\'", sep="")
cmd
cat(cmd, "\n")
system(cmd)

if you need more control of the string going to system(); in my 
experience, eyeballing cmd is very helpful.

Roger

>
> any help?
>
> Agus
>
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no



More information about the grass-stats mailing list