Skip to content
Prev 9486 / 29559 Next

syntax problem with r.mapcalculator

On Tue, 5 Oct 2010, Aubrey Moore wrote:

            
library(spgrass6)
data(meuse.grid)
coordinates(meuse.grid) <- c("x", "y")
gridded(meuse.grid) <- TRUE
fullgrid(meuse.grid) <- TRUE
meuse.grid$ddev <- meuse.grid$dist - mean(meuse.grid$dist, na.rm=TRUE)
loc <- initGRASS("/home/rsb/topics/GRASS/g640/grass-6.4.0",
   home=tempdir(), SG=meuse.grid)
writeRAST6(meuse.grid["ddev"], "ddev")
execGRASS("r.mapcalculator", flags = c("overwrite"),
   parameters=list(outfile="result", amap="ddev", formula="'if(A<0,0,A)'"))
res <- readRAST6("result")
summary(res)
summary(meuse.grid["ddev"])

works for me under Linux with: formula="'if(A<0,0,A)'", protecting the 
inner quotes with outer quotes. On Windows the incantation will be 
different, possibly:

execGRASS("r.mapcalculator", flags = c("overwrite"),
   parameters=list(outfile="result", amap="ddev",
     formula="\"if(A<0,0,A)\""))

(untried on Windows, also works on Linux).

Hope this helps,

Roger

PS. The statsgrass list has more direct access to GRASS users and 
developers with experience of shell quoting solutions.