Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
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.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.