Today ‘rjags’ was annoying me. The function ‘update.jags’ was (without asking me) disabling the progress bar when I was running R non-interactively. It was annoying, as I was sending R output to a log file in my dropbox, and having model progress written to a remotely accessible file would have == cool! A quick look at the source code showed it was just a tiny change required to get the progress bar back on. Unfortunately ‘update.jags’ is a relatively low level function attached to the ‘rjags’ namespace and not exported. So simply redefining it wasn’t an option. But changing the source and reinstalling ‘rjags’ seemed like overkill and I’d have to do that every time ‘rjags’ was updated. Wouldn’t it be cool if you could just reassign an object inside a namespace? Well you can!
assignInNamespace('update.jags', value=eval(parse(text=gsub(' interactive() &&',
'', deparse(rjags:::update.jags), fixed=TRUE))), ns='rjags',
envir='package:rjags')
Use ‘gsub’ to remove the offending bit of R code, ' interactive() &&', and a combo of ‘:::’, ‘deparse’, ‘parse’ and ‘eval’ to get the original function and feed it back to the namespace in an altered form. Pretty cool.

Pingback: More posts & presentations! | Quantitative & Applied Ecology Group
Pingback: R you still using Excel? | liz martin's research
This is clever and quite helpful. Thanks!