Skip to content

Instantly share code, notes, and snippets.

@njtierney
Last active May 30, 2025 07:03
Show Gist options
  • Select an option

  • Save njtierney/7c07e3c8922f506d376fed162b8c3479 to your computer and use it in GitHub Desktop.

Select an option

Save njtierney/7c07e3c8922f506d376fed162b8c3479 to your computer and use it in GitHub Desktop.
ugh-optim
## requires pass by position?

fr_pos <- function(x) {   ## Rosenbrock Banana function
    x1 <- x[1]
    x2 <- x[2]
    100 * (x2 - x1 * x1)^2 + (1 - x1)^2
}

pars <- list(a = -1.2, b = 1)
pars$a
#> [1] -1.2
optim(pars, fr_pos)
#> $par
#>        a        b 
#> 1.000260 1.000506 
#> 
#> $value
#> [1] 8.825241e-08
#> 
#> $counts
#> function gradient 
#>      195       NA 
#> 
#> $convergence
#> [1] 0
#> 
#> $message
#> NULL

fr_list <- function(x) {   ## Rosenbrock Banana function
    x1 <- x$a
    x2 <- x$b
    100 * (x2 - x1 * x1)^2 + (1 - x1)^2
}

pars <- list(a = -1.2, b = 1)

optim(pars, fr_list)
#> Error in x$a: $ operator is invalid for atomic vectors


fr_named_vect <- function(x) {   ## Rosenbrock Banana function
    x1 <- x[["a"]]
    x2 <- x[["b"]]
    100 * (x2 - x1 * x1)^2 + (1 - x1)^2
}

pars <- list(a = -1.2, b = 1)

optim(pars, fr_named_vect)
#> $par
#>        a        b 
#> 1.000260 1.000506 
#> 
#> $value
#> [1] 8.825241e-08
#> 
#> $counts
#> function gradient 
#>      195       NA 
#> 
#> $convergence
#> [1] 0
#> 
#> $message
#> NULL
optim(pars, fr_pos)
#> $par
#>        a        b 
#> 1.000260 1.000506 
#> 
#> $value
#> [1] 8.825241e-08
#> 
#> $counts
#> function gradient 
#>      195       NA 
#> 
#> $convergence
#> [1] 0
#> 
#> $message
#> NULL

Created on 2025-05-30 with reprex v2.1.1

Session info

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.5.0 (2025-04-11)
#>  os       macOS Sonoma 14.5
#>  system   aarch64, darwin20
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Australia/Hobart
#>  date     2025-05-30
#>  pandoc   3.6.3 @ /Applications/Positron.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#>  quarto   1.7.31 @ /usr/local/bin/quarto
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date (UTC) lib source
#>  cli           3.6.5   2025-04-23 [1] CRAN (R 4.5.0)
#>  digest        0.6.37  2024-08-19 [1] CRAN (R 4.5.0)
#>  evaluate      1.0.3   2025-01-10 [1] CRAN (R 4.5.0)
#>  fastmap       1.2.0   2024-05-15 [1] CRAN (R 4.5.0)
#>  fs            1.6.6   2025-04-12 [1] CRAN (R 4.5.0)
#>  glue          1.8.0   2024-09-30 [1] CRAN (R 4.5.0)
#>  htmltools     0.5.8.1 2024-04-04 [1] CRAN (R 4.5.0)
#>  knitr         1.50    2025-03-16 [1] CRAN (R 4.5.0)
#>  lifecycle     1.0.4   2023-11-07 [1] CRAN (R 4.5.0)
#>  reprex        2.1.1   2024-07-06 [1] CRAN (R 4.5.0)
#>  rlang         1.1.6   2025-04-11 [1] CRAN (R 4.5.0)
#>  rmarkdown     2.29    2024-11-04 [1] CRAN (R 4.5.0)
#>  sessioninfo   1.2.3   2025-02-05 [1] CRAN (R 4.5.0)
#>  withr         3.0.2   2024-10-28 [1] CRAN (R 4.5.0)
#>  xfun          0.52    2025-04-02 [1] CRAN (R 4.5.0)
#>  yaml          2.3.10  2024-07-26 [1] CRAN (R 4.5.0)
#> 
#>  [1] /Users/nick_1/Library/R/arm64/4.5/library
#>  [2] /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment