@@ -3,7 +3,7 @@ layout: post.njk
33title : Landscape of ODE Solvers in R
44subtitle : A Practical Overview
55date : 2026-05-04
6- lastModified : 2026-05-04
6+ lastModified : 2026-05-05
77description : ' An overview of ODE solvers in R, highlighting their capabilities, performance, and practical considerations.'
88author : Evgeny Metelkin
99authorURL : https://metelkin.me
@@ -60,8 +60,8 @@ Some tools included in this review go beyond ODE solving and provide additional
6060
6161| Package | Engine | Solver type | Algorithms | Model format | Stiff | DAE | DDE | Time events | Conditional events | Downloads (2025) |
6262| --------| --------| ------| ------------| --------------| -------| -----| -----| -------------| --------------------| ------------------------|
63- | [ deSolve] ( https://cran.r-project.org/package=deSolve ) | [ ODEPACK] ( http://www.netlib.org/odepack/ ) ; [ DASPK] ( http://www.netlib.org/ode/ ) (Fortran) | Compiled | lsoda, lsode, lsodes, lsodar, vode, daspk, bdf, adams, euler, rk4, ode23, ode45, | R func (interpreted); C/C++/Fortran (compiled) | Yes (lsoda) | Yes (daspk) | Yes (dede) | Yes | Yes (rootfun ) | 635628 |
64- | [ diffeqr] ( https://cran.r-project.org/package=diffeqr ) | [ DifferentialEquations.jl] ( https://docs.sciml.ai/DiffEqDocs/stable/ ) SciML ecosystem | External runtime (Julia) | _ depends on DifferentialEquations.jl _ [ see docs] ( https://docs.sciml.ai/DiffEqDocs/stable/solvers/ode_solve/ ) | R func (interpreted); Julia func (JIT/compiled) | Yes | Yes | Yes | Yes | Yes | 4688 |
63+ | [ deSolve] ( https://cran.r-project.org/package=deSolve ) | [ ODEPACK] ( http://www.netlib.org/odepack/ ) ; [ DASPK] ( http://www.netlib.org/ode/ ) (Fortran) | Compiled | lsoda, lsode, lsodes, lsodar, vode, daspk, bdf, adams, euler, rk4, ode23, ode45, | R func (interpreted); C/C++/Fortran (compiled) | Yes (lsoda) | Yes (daspk) | Yes (dede) | Yes | Yes (root finding ) | 635628 |
64+ | [ diffeqr] ( https://cran.r-project.org/package=diffeqr ) | [ DifferentialEquations.jl] ( https://docs.sciml.ai/DiffEqDocs/stable/ ) SciML ecosystem | External runtime (Julia) | > 200 algorithms [ see docs] ( https://docs.sciml.ai/DiffEqDocs/stable/solvers/ode_solve/ ) | R func (interpreted); Julia func (JIT/compiled) | Yes | Yes | Yes | Yes | Yes (root finding) | 4688 |
6565| [ dMod] ( https://cran.r-project.org/package=dMod ) | _ deSolve_ | Compiled | _ depends on deSolve_ | DSL (cOde, compiled), API (compiled)| Yes | - | - | - | - | 4947 |
6666| [ EpiModel] ( https://cran.r-project.org/package=EpiModel ) | _ deSolve_ | Compiled | _ depends on deSolve_ | R func (interpreted) | Yes | - | Yes (dede) | - | - | 23088 |
6767| * [ IQRTools] ( https://iqrtools.intiquan.com/doc/book/license-and-availability.html ) | [ CVODES] ( https://sundials.readthedocs.io/en/latest/cvodes/index.html ) (SUNDIALS) (C) | Compiled | BDF, Adams | DSL (Compiled) | Yes (BDF) | - | - | Yes | - | _ NA_ |
@@ -70,8 +70,9 @@ Some tools included in this review go beyond ODE solving and provide additional
7070| [ PBSddesolve] ( https://cran.r-project.org/package=PBSddesolve ) | [ solv95] ( https://webhomes.maths.ed.ac.uk/~swood34/simon/dde.html ) (C) | Compiled | dde | R func (interpreted) | - | - | Yes | - | - | 10341 |
7171| [ PKPDsim] ( https://cran.r-project.org/package=PKPDsim ) | [ Boost::odeint] ( https://github.com/boostorg/odeint ) (C++) | Compiled | Adaptive RK (RKCK54) | DSL (compiled) | - | - | - | Yes | - | 10319 |
7272| [ pracma] ( https://cran.r-project.org/package=pracma ) | Matlab-inspired implementation | Pure R | ode23, ode23s, ode45, ode78 | R func (interpreted) | Yes (ode23s) | - | - | - | - | 1059146 |
73- | [ r2sundials] ( https://cran.r-project.org/package=r2sundials ) | [ SUNDIALS] ( https://computing.llnl.gov/projects/sundials ) (C) | Compiled | BDF, Adams | R func (interpreted); C++ (compiled) | Yes | Yes (via IDA) | - | - | Yes (via rootfinding) | 3439 |
74- | [ rodeo] ( https://cran.r-project.org/package=rodeo ) | _ deSolve_ | Compiled | _ depends on deSolve_ | Table format (interpreted / compiled) | Yes | - | - | Yes | Yes (via deSolve roots) | 3386 |
73+ | [ r2sundials] ( https://cran.r-project.org/package=r2sundials ) | [ SUNDIALS] ( https://computing.llnl.gov/projects/sundials ) (C) | Compiled | BDF, Adams | R func (interpreted); C++ (compiled) | Yes | Yes (via IDA) | - | - | Yes (root finding) | 3439 |
74+ | [ reticulate] ( https://cran.r-project.org/package=reticulate ) | [ SciPy solve_ivp] ( https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html ) (Python) | External runtime (Python) | RK45, RK23, DOP853, Radau, BDF, LSODA | R func (interpreted); Python func (interpreted) | Yes | - | - | - | Yes (root detection only) | 3566483 |
75+ | [ rodeo] ( https://cran.r-project.org/package=rodeo ) | _ deSolve_ | Compiled | _ depends on deSolve_ | Table format (interpreted / compiled) | Yes | - | - | Yes | Yes (root finding) | 3386 |
7576| [ rstan] ( https://cran.r-project.org/package=rstan ) | [ Stan Math Library] ( https://mc-stan.org/docs/2_27/functions-reference/functions-ode-solver.html ) (C++) | Compiled | rk45, bdf, adams, ckrk | DSL (Stan language, compiled) | Yes (bdf) | Yes (limited, index-1) | - | - | - | 1107167 |
7677| [ rxode2] ( https://cran.r-project.org/package=rxode2 ) | [ LIBLSODA] ( https://github.com/sdwfrost/liblsoda ) + custom (C) | Compiled | liblsoda, lsoda, dop853, indLin | DSL (R-like, compiled) | Yes | - | - | Yes | - | 42872 |
7778| [ sundialr] ( https://cran.r-project.org/package=sundialr ) | [ SUNDIALS] ( https://computing.llnl.gov/projects/sundials ) (C) | Compiled | BDF, Adams | R func (interpreted); C++ (compiled) | Yes | Yes (via IDA) | - | Yes | - | 2024 |
0 commit comments