Rchievement of the day

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.

This entry was posted in Programming, R and tagged , , , , , . Bookmark the permalink.

3 Responses to Rchievement of the day

  1. Pingback: More posts & presentations! | Quantitative & Applied Ecology Group

  2. Pingback: R you still using Excel? | liz martin's research

  3. Devin says:

    This is clever and quite helpful. Thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s