Rchievement of the day

August 16, 2011

(This article was first published on ASCIImoose: William K. Morris’s Blog » R, and kindly contributed to R-bloggers)

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',

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.

To leave a comment for the author, please follow the link and comment on their blog: ASCIImoose: William K. Morris’s Blog » R.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)