Skip to content

Commit 38ea435

Browse files
authored
Merge pull request #526 from stan-dev/fix-read_cmdstan_csv-no-variables
Fix read_cmdstan_csv with no variables after variational/optimize
2 parents 4457bbf + f1447d4 commit 38ea435

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

R/csv.R

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,11 @@ read_cmdstan_csv <- function(files,
342342
format <- "draws_matrix"
343343
}
344344
as_draws_format <- as_draws_format_fun(format)
345-
variational_draws <- do.call(as_draws_format, list(draws[[1]][-1, colnames(draws[[1]]) != "lp__", drop = FALSE]))
345+
if (length(draws) == 0) {
346+
variational_draws <- NULL
347+
} else {
348+
variational_draws <- do.call(as_draws_format, list(draws[[1]][-1, colnames(draws[[1]]) != "lp__", drop = FALSE]))
349+
}
346350
if (!is.null(variational_draws)) {
347351
if ("log_p__" %in% posterior::variables(variational_draws)) {
348352
variational_draws <- posterior::rename_variables(variational_draws, lp__ = "log_p__")
@@ -361,8 +365,12 @@ read_cmdstan_csv <- function(files,
361365
format <- "draws_matrix"
362366
}
363367
as_draws_format <- as_draws_format_fun(format)
364-
point_estimates <- do.call(as_draws_format, list(draws[[1]][1, , drop = FALSE]))
365-
point_estimates <- posterior::subset_draws(point_estimates, variable = variables)
368+
if (length(draws) == 0) {
369+
point_estimates <- NULL
370+
} else {
371+
point_estimates <- do.call(as_draws_format, list(draws[[1]][1, , drop = FALSE]))
372+
point_estimates <- posterior::subset_draws(point_estimates, variable = variables)
373+
}
366374
if (!is.null(point_estimates)) {
367375
posterior::variables(point_estimates) <- repaired_variables
368376
}

tests/testthat/test-csv.R

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,3 +801,14 @@ test_that("variable_dims() works", {
801801
expect_equal(variable_dims(vars), vars_dims)
802802
})
803803

804+
test_that("read_cmdstan_csv works if no variables are specified", {
805+
expect_silent(
806+
read_cmdstan_csv(fit_bernoulli_optimize$output_files(), variables = "", sampler_diagnostics = "")
807+
)
808+
expect_silent(
809+
read_cmdstan_csv(fit_bernoulli_variational$output_files(), variables = "", sampler_diagnostics = "")
810+
)
811+
expect_silent(
812+
read_cmdstan_csv(fit_bernoulli_thin_1$output_files(), variables = "", sampler_diagnostics = "")
813+
)
814+
})

0 commit comments

Comments
 (0)