florianhartig / BayesianTools

General-Purpose MCMC and SMC Samplers and Tools for Bayesian Statistics
https://cran.r-project.org/web/packages/BayesianTools/index.html
115 stars 29 forks source link

getSample(whichParameters) breaks getSample(parametersOnly = FALSE) #219

Open twest820 opened 3 years ago

twest820 commented 3 years ago

A user should be able to do something like getSample(parametersOnly = FALSE, whichParameters = 1) and get back a parameter array with their first MCMC parameter followed by the Lposterior, Llikelihood, and Lprior columns. However, it looks like these two lines

if (!is.null(whichParameters)) out = out[,whichParameters]

if (!is.null(whichParameters)) temp = temp[,whichParameters]

blindly slices Lposterior, Llikelihood, and Lprior off the output. Fix would just be not to do that.

Workaround is something like

as.data.frame(getSample()) %>% select(firstParameter, Lposterior, Llikelihood, Lprior)

which has the advantage of also avoiding the next issue I'm about to open.

florianhartig commented 3 years ago

Yep. I will leave this open for now because I don't think it's particularly critical and having looked at getSample I get the feeling we should have a more general look at the getSample structure, there is a lot of code that has accumulated around getSample that feels a bit clumsy, I think we should consider to re-model the entire implementation (behind the interface) instead of patching it up.