nlmixr2 / rxode2et

https://nlmixr2.github.io/rxode2et/
1 stars 1 forks source link

`et()` cmt cannot deal with a call to an object rather than a character #16

Closed frbrz closed 1 year ago

frbrz commented 1 year ago

Hi!

I was trying to simulate individuals with different routes of administration and I may have incurred into an et() unexpected behavior. My guess is that the cmt argument of et() is expecting a character (or integer), but cannot handle call to an object (which is a character) as in the example below.

Many thanks :)

rm(list = ls())

library(tidyverse)
library(nlmixr2)
#> Loading required package: nlmixr2data

dosing_df <- tibble(
  DOSE = c(0.1, 0.5),
  CMT = c("A", "B"),
  TIME = c(0, 0)
) 

samp_t <- c(0, 0.1, 0.5, 1, 2) 

# The below should work... but does not
sub_df <- dosing_df[1, , drop = T]
et(
  amt = sub_df$DOSE,
  cmt = sub_df$CMT,
  time = sub_df$TIME, 
  evid = 1,
  id = 1:5
) %>% 
  add.sampling(time = samp_t)
#> Error in et.default(amt = sub_df$DOSE, cmt = sub_df$CMT, time = sub_df$TIME, : turning off compartments can only be done when 'evid'=2

# This instead works
et(
  amt = sub_df$DOSE,
  cmt = "A",
  time = sub_df$TIME, 
  evid = 1,
  id = 1:5
) %>% 
  add.sampling(time = samp_t)
#> ── EventTable with 30 records ──
#> 5 dosing records (see x$get.dosing(); add with add.dosing or et)
#> 25 observation times (see x$get.sampling(); add with add.sampling or et)
#> ── First part of x: ──
#> # A tibble: 30 × 5
#>       id  time cmt     amt evid         
#>    <int> <dbl> <chr> <dbl> <evid>       
#>  1     1   0   (obs)  NA   0:Observation
#>  2     1   0   A       0.1 1:Dose (Add) 
#>  3     1   0.1 (obs)  NA   0:Observation
#>  4     1   0.5 (obs)  NA   0:Observation
#>  5     1   1   (obs)  NA   0:Observation
#>  6     1   2   (obs)  NA   0:Observation
#>  7     2   0   (obs)  NA   0:Observation
#>  8     2   0   A       0.1 1:Dose (Add) 
#>  9     2   0.1 (obs)  NA   0:Observation
#> 10     2   0.5 (obs)  NA   0:Observation
#> # … with 20 more rows
# ---> I guess that the problem is that cmt expects a character and not a call to an object

reprex::reprex(session_info = T)
#> ℹ Non-interactive session, setting `html_preview = FALSE`.
#> CLIPR_ALLOW has not been set, so clipr will not run interactively
#> Error in switch(where, expr = stringify_expression(x_expr), clipboard = ingest_clipboard(), : EXPR must be a length 1 vector

Created on 2023-02-07 by the reprex package (v2.0.1)

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.2.0 (2022-04-22) #> os Fedora 33 (Container Image) #> system x86_64, linux-gnu #> ui X11 #> language en_US:en #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz Europe/Zurich #> date 2023-02-07 #> pandoc 2.17.1.1 @ /usr/lib/rstudio-server/bin/quarto/bin/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date (UTC) lib source #> assertthat 0.2.1 2019-03-21 [4] CRAN (R 4.2.0) #> backports 1.4.1 2021-12-13 [4] CRAN (R 4.2.0) #> broom 1.0.2 2022-12-15 [1] CRAN (R 4.2.0) #> cachem 1.0.6 2021-08-19 [4] CRAN (R 4.2.0) #> cellranger 1.1.0 2016-07-27 [4] CRAN (R 4.2.0) #> checkmate 2.1.0 2022-04-21 [4] CRAN (R 4.2.0) #> cli 3.6.0 2023-01-09 [1] CRAN (R 4.2.0) #> clipr 0.8.0 2022-02-22 [4] CRAN (R 4.2.0) #> colorspace 2.0-3 2022-02-21 [4] CRAN (R 4.2.0) #> crayon 1.5.1 2022-03-26 [4] CRAN (R 4.2.0) #> data.table 1.14.2 2021-09-27 [4] CRAN (R 4.2.0) #> DBI 1.1.2 2021-12-20 [4] CRAN (R 4.2.0) #> dbplyr 2.2.1 2022-06-27 [1] CRAN (R 4.2.0) #> digest 0.6.29 2021-12-01 [4] CRAN (R 4.2.0) #> dplyr * 1.0.9 2022-04-28 [4] CRAN (R 4.2.0) #> ellipsis 0.3.2 2021-04-29 [4] CRAN (R 4.2.0) #> evaluate 0.15 2022-02-18 [4] CRAN (R 4.2.0) #> fansi 1.0.3 2022-03-24 [4] CRAN (R 4.2.0) #> fastmap 1.1.0 2021-01-25 [4] CRAN (R 4.2.0) #> forcats * 0.5.1 2021-01-27 [4] CRAN (R 4.2.0) #> fs 1.5.2 2021-12-08 [4] CRAN (R 4.2.0) #> gargle 1.2.0 2021-07-02 [4] CRAN (R 4.2.0) #> generics 0.1.2 2022-01-31 [4] CRAN (R 4.2.0) #> ggplot2 * 3.4.0 2022-11-04 [1] CRAN (R 4.2.0) #> glue 1.6.2 2022-02-24 [4] CRAN (R 4.2.0) #> googledrive 2.0.0 2021-07-08 [4] CRAN (R 4.2.0) #> googlesheets4 1.0.0 2021-07-21 [4] CRAN (R 4.2.0) #> gtable 0.3.0 2019-03-25 [4] CRAN (R 4.2.0) #> haven 2.5.0 2022-04-15 [4] CRAN (R 4.2.0) #> highr 0.9 2021-04-16 [4] CRAN (R 4.2.0) #> hms 1.1.1 2021-09-26 [4] CRAN (R 4.2.0) #> htmltools 0.5.2 2021-08-25 [4] CRAN (R 4.2.0) #> httr 1.4.3 2022-05-04 [4] CRAN (R 4.2.0) #> jsonlite 1.8.0 2022-02-22 [4] CRAN (R 4.2.0) #> knitr 1.39 2022-04-26 [4] CRAN (R 4.2.0) #> lattice 0.20-45 2021-09-22 [4] CRAN (R 4.2.0) #> lbfgsb3c 2020-3.2 2020-03-03 [1] CRAN (R 4.2.0) #> lifecycle 1.0.3 2022-10-07 [1] CRAN (R 4.2.0) #> lotri 0.4.2 2022-06-18 [1] CRAN (R 4.2.0) #> lubridate 1.8.0 2021-10-07 [4] CRAN (R 4.2.0) #> magrittr 2.0.3 2022-03-30 [4] CRAN (R 4.2.0) #> memoise 2.0.1 2021-11-26 [4] CRAN (R 4.2.0) #> modelr 0.1.8 2020-05-19 [4] CRAN (R 4.2.0) #> munsell 0.5.0 2018-06-12 [4] CRAN (R 4.2.0) #> n1qn1 6.0.1-10 2020-11-17 [1] CRAN (R 4.2.0) #> nlme 3.1-157 2022-03-25 [4] CRAN (R 4.2.0) #> nlmixr2 * 2.0.7 2022-06-27 [1] CRAN (R 4.2.0) #> nlmixr2data * 2.0.7 2022-04-22 [1] CRAN (R 4.2.0) #> nlmixr2est 2.0.8 2022-06-22 [1] CRAN (R 4.2.0) #> nlmixr2plot 2.0.6 2022-05-23 [1] CRAN (R 4.2.0) #> pillar 1.7.0 2022-02-01 [4] CRAN (R 4.2.0) #> pkgconfig 2.0.3 2019-09-22 [4] CRAN (R 4.2.0) #> PreciseSums 0.5 2022-04-22 [1] CRAN (R 4.2.0) #> purrr * 0.3.4 2020-04-17 [4] CRAN (R 4.2.0) #> qs 0.25.4 2022-08-09 [1] CRAN (R 4.2.0) #> R.cache 0.15.0 2021-04-30 [4] CRAN (R 4.2.0) #> R.methodsS3 1.8.1 2020-08-26 [4] CRAN (R 4.2.0) #> R.oo 1.24.0 2020-08-26 [4] CRAN (R 4.2.0) #> R.utils 2.11.0 2021-09-26 [4] CRAN (R 4.2.0) #> R6 2.5.1 2021-08-19 [4] CRAN (R 4.2.0) #> RApiSerialize 0.1.2 2022-08-25 [1] CRAN (R 4.2.0) #> Rcpp 1.0.8.3 2022-03-17 [4] CRAN (R 4.2.0) #> RcppParallel 5.1.5 2022-01-05 [4] CRAN (R 4.2.0) #> readr * 2.1.2 2022-01-30 [4] CRAN (R 4.2.0) #> readxl 1.4.0 2022-03-28 [4] CRAN (R 4.2.0) #> reprex 2.0.1 2021-08-05 [4] CRAN (R 4.2.0) #> rlang 1.0.6 2022-09-24 [1] CRAN (R 4.2.0) #> rmarkdown 2.14 2022-04-25 [4] CRAN (R 4.2.0) #> rstudioapi 0.13 2020-11-12 [4] CRAN (R 4.2.0) #> rvest 1.0.2 2021-10-16 [4] CRAN (R 4.2.0) #> rxode2 2.0.7 2022-05-17 [1] CRAN (R 4.2.0) #> scales 1.2.0 2022-04-13 [4] CRAN (R 4.2.0) #> sessioninfo 1.2.2 2021-12-06 [4] CRAN (R 4.2.0) #> stringfish 0.15.7 2022-04-13 [1] CRAN (R 4.2.0) #> stringi 1.7.6 2021-11-29 [4] CRAN (R 4.2.0) #> stringr * 1.4.0 2019-02-10 [4] CRAN (R 4.2.0) #> styler 1.7.0 2022-03-13 [3] CRAN (R 4.2.0) #> symengine 0.2.1 2022-04-28 [1] CRAN (R 4.2.0) #> sys 3.4 2020-07-23 [4] CRAN (R 4.2.0) #> tibble * 3.1.7 2022-05-03 [4] CRAN (R 4.2.0) #> tidyr * 1.2.0 2022-02-01 [4] CRAN (R 4.2.0) #> tidyselect 1.2.0 2022-10-10 [1] CRAN (R 4.2.0) #> tidyverse * 1.3.2 2022-07-18 [1] CRAN (R 4.2.0) #> tzdb 0.3.0 2022-03-28 [4] CRAN (R 4.2.0) #> units 0.8-0 2022-02-05 [4] CRAN (R 4.2.0) #> utf8 1.2.2 2021-07-24 [4] CRAN (R 4.2.0) #> vctrs 0.5.1 2022-11-16 [1] CRAN (R 4.2.0) #> vpc 1.2.2 2021-01-11 [1] CRAN (R 4.2.0) #> withr 2.5.0 2022-03-03 [4] CRAN (R 4.2.0) #> xfun 0.30 2022-03-02 [4] CRAN (R 4.2.0) #> xml2 1.3.3 2021-11-30 [4] CRAN (R 4.2.0) #> yaml 2.3.5 2022-02-21 [4] CRAN (R 4.2.0) #> #> [1] /home/brizzif/R/x86_64-pc-linux-gnu-library/4.2.0-foss #> [2] /apps/rocs/2020.08/cascadelake/software/R-Roche-bundle/2022.09-foss-2020a-R-4.2.0-Anaconda3-2021.05 #> [3] /apps/rocs/2020.08/cascadelake/software/R-bundle-Bioconductor/3.15-foss-2020a-R-4.2.0 #> [4] /apps/rocs/2020.08/cascadelake/software/R/4.2.0-foss-2020a/lib64/R/library #> #> ────────────────────────────────────────────────────────────────────────────── ```
mattfidler commented 1 year ago

The et() uses some non standard evaluation. This should probably be fixed eventually too.

mattfidler commented 1 year ago

This fixes the case you have above.

mattfidler commented 1 year ago

It will be on CRAN (hopefully within a week or two)