Skip to content

If model_save_dir does not exist, an error is thrown with a suboptimal message #4

Description

@brookslogan

Following the README example:

library(DelphiRF)
library(ggplot2)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
data(ma_dph)
value_col <- "confirmed_case_7d_avg"
refd_col <- "test_date"
lag_col <- "lag"
ref_lag <- 14
smoothed <- TRUE
# Preprocess the data for a specific location
df <- data_preprocessing(
  ma_dph, 
  value_col = "confirmed_case_7d_avg", 
  refd_col = "test_date", 
  lag_col = "lag", 
  ref_lag = 14, 
  smoothed = TRUE
)
# Define the test date range
test_dates <-  seq(from = as.Date("2022-06-15"),
                   to = as.Date("2022-06-30"),
                   by = "day")
# Filter training data
train_data <- df %>%
  filter(report_date < min(test_dates))
# Add weighting-related features to training data
# This should be done after the train_data is filtered with test_date
train_data <- add_weights_related(train_data)
# Filter test data
test_data <- df %>%
  filter(report_date %in% test_dates)

# Run DelphiRF for forecasting  
results <- DelphiRF(df, as.Date("2022-06-01"))
#> Warning in dir.create(path): cannot create dir
#> './receiving/testdata_count_state', reason 'No such file or directory'
#> Warning in quantile_genlasso_lp(x = x, y = y, d = d, tau = tau, lambda =
#> lambda, : gurobi R package not installed, using Rglpk instead.
#> Warning in dir.create(path): cannot create dir
#> './receiving/testdata_count_state', reason 'No such file or directory'
#> Warning in gzfile(file, mode): cannot open compressed file
#> './receiving/testdata_count_state/20220601_ma_lag0_tau_all_tw365_lambda0.1_gamma0.1.rds',
#> probable reason 'No such file or directory'
#> Error in `gzfile()`:
#> ! cannot open the connection

Created on 2026-06-01 with reprex v2.1.1

For anyone who hasn't seen this pattern, with dir.create confusingly warning "No such file or directory" ("yeah, of course it doesn't exist; that's why I said to create it"), followed by something supposedly about gzfile, it may not be obvious what is going on.

Two possible approaches:

  • Have DelphiRF() check for model_save_dir's existence and issue an error with a better message.
  • Create model_save_dir if it doesn't exist. This may cause issues with CRAN policies, particularly with the current default model_save_dir:

Packages should not write in the user’s home filespace (including clipboards), nor anywhere else on the file system apart from the R session’s temporary directory (or during installation in the location pointed to by TMPDIR: and such usage should be cleaned up). Installing into the system’s R installation (e.g., scripts to its bin directory) is not allowed.

Limited exceptions may be allowed in interactive sessions if the package obtains confirmation from the user.

For R version 4.0 or later (hence a version dependency is required or only conditional use is possible), packages may store user-specific data, configuration and cache files in their respective user directories obtained from tools::R_user_dir(), provided that by default sizes are kept as small as possible and the contents are actively managed (including removing outdated material).

It would probably be easiest to just default to a temp directory, to avoid having to manage clean-up of files in a the R_user_dir() approach.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions