library(mandala)
library(lme4)
library(lmerTest)
library(dplyr)
library(ggplot2)Comparison: Mandala vs lme4
Field trial analysis vs general-purpose mixed models
Overview
This tutorial compares the mandala package with lme4, the most widely-used R package for mixed models. While both can fit linear mixed models, they serve different purposes.
Background
| Package | Primary Focus | Best For |
|---|---|---|
| lme4 | General-purpose | Any discipline |
| Mandala | Agricultural trials | Field experiments |
Loading Packages
Example 1: Basic RCBD
Data Setup
set.seed(321)
n_genotypes <- 12
n_blocks <- 5
rcbd_data <- expand.grid(
genotype = factor(paste0("G", sprintf("%02d", 1:n_genotypes))),
block = factor(paste0("B", 1:n_blocks))
)
rcbd_data$yield <- 4500 +
rnorm(n_genotypes, 0, 20)[as.numeric(rcbd_data$genotype)] +
rnorm(n_blocks, 0, 10)[as.numeric(rcbd_data$block)] +
rnorm(nrow(rcbd_data), 0, 15)
head(rcbd_data) genotype block yield
1 G01 B1 4542.286
2 G02 B1 4496.306
3 G03 B1 4503.019
4 G04 B1 4513.249
5 G05 B1 4497.798
6 G06 B1 4522.072
Syntax Comparison
Mandala:
mandala(
fixed = yield ~ genotype,
random = ~ block,
data = rcbd_data
)lme4:
lmer(
yield ~ genotype + (1|block),
data = rcbd_data
)lme4 Analysis
lme4_model <- lmer(
yield ~ genotype + (1|block),
data = rcbd_data,
REML = TRUE
)
summary(lme4_model)Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: yield ~ genotype + (1 | block)
Data: rcbd_data
REML criterion at convergence: 423
Scaled residuals:
Min 1Q Median 3Q Max
-1.9341 -0.7533 0.1652 0.6741 1.7233
Random effects:
Groups Name Variance Std.Dev.
block (Intercept) 125.5 11.20
Residual 221.6 14.89
Number of obs: 60, groups: block, 5
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 4529.901 8.333 19.684 543.637 < 2e-16 ***
genotypeG02 -47.166 9.415 44.000 -5.010 9.34e-06 ***
genotypeG03 -33.401 9.415 44.000 -3.548 0.000938 ***
genotypeG04 -19.832 9.415 44.000 -2.106 0.040913 *
genotypeG05 -28.048 9.415 44.000 -2.979 0.004693 **
genotypeG06 -16.668 9.415 44.000 -1.770 0.083595 .
genotypeG07 -13.595 9.415 44.000 -1.444 0.155835
genotypeG08 -24.406 9.415 44.000 -2.592 0.012896 *
genotypeG09 -17.345 9.415 44.000 -1.842 0.072182 .
genotypeG10 -43.653 9.415 44.000 -4.636 3.17e-05 ***
genotypeG11 -25.541 9.415 44.000 -2.713 0.009488 **
genotypeG12 -1.386 9.415 44.000 -0.147 0.883608
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr) gntG02 gntG03 gntG04 gntG05 gntG06 gntG07 gntG08 gntG09
genotypeG02 -0.565
genotypeG03 -0.565 0.500
genotypeG04 -0.565 0.500 0.500
genotypeG05 -0.565 0.500 0.500 0.500
genotypeG06 -0.565 0.500 0.500 0.500 0.500
genotypeG07 -0.565 0.500 0.500 0.500 0.500 0.500
genotypeG08 -0.565 0.500 0.500 0.500 0.500 0.500 0.500
genotypeG09 -0.565 0.500 0.500 0.500 0.500 0.500 0.500 0.500
genotypeG10 -0.565 0.500 0.500 0.500 0.500 0.500 0.500 0.500 0.500
genotypeG11 -0.565 0.500 0.500 0.500 0.500 0.500 0.500 0.500 0.500
genotypeG12 -0.565 0.500 0.500 0.500 0.500 0.500 0.500 0.500 0.500
gntG10 gntG11
genotypeG02
genotypeG03
genotypeG04
genotypeG05
genotypeG06
genotypeG07
genotypeG08
genotypeG09
genotypeG10
genotypeG11 0.500
genotypeG12 0.500 0.500
# Variance components
as.data.frame(VarCorr(lme4_model)) grp var1 var2 vcov sdcor
1 block (Intercept) <NA> 125.5453 11.20470
2 Residual <NA> <NA> 221.6143 14.88671
Example 2: Nested Design
set.seed(654)
n_genotypes <- 30
n_complete <- 3
nested_data <- expand.grid(
genotype = factor(paste0("G", sprintf("%02d", 1:n_genotypes))),
complete_block = factor(1:n_complete)
)
nested_data$incomplete_block <- factor(
paste0(nested_data$complete_block, ".",
rep(1:5, length.out = nrow(nested_data)))
)
nested_data$yield <- 5500 +
rnorm(n_genotypes, 0, 30)[as.numeric(nested_data$genotype)] +
rnorm(n_complete, 0, 15)[as.numeric(nested_data$complete_block)] +
rnorm(nrow(nested_data), 0, 20)lme4_nested <- lmer(
yield ~ genotype + (1|complete_block) + (1|complete_block:incomplete_block),
data = nested_data,
REML = TRUE
)
as.data.frame(VarCorr(lme4_nested)) grp var1 var2 vcov sdcor
1 complete_block:incomplete_block (Intercept) <NA> 24.484816 4.9482134
2 complete_block (Intercept) <NA> 0.717081 0.8468063
3 Residual <NA> <NA> 301.014419 17.3497671
Example 3: Spatial Models
One key difference is spatial modeling support. Mandala has built-in spatial structures, while lme4 requires extensions.
Mandala Spatial
# AR1 spatial correlation
spatial_ar1 <- mandala(
fixed = yield ~ genotype,
random = ~ block + ar1(row) + ar1(col),
data = field_data
)Initial data rows: 400
Final data rows after NA handling: 400
Explicit param_df Check:
name type vc_idx init lower upper origin
1 block var 1 9077.445 1.0e-06 Inf G
2 ar1(row) var 2 9077.445 1.0e-06 Inf G
3 rho.ar1(row) rho 2 0.500 -9.5e-01 0.95 G
4 ar1(col) var 3 9077.445 1.0e-06 Inf G
5 rho.ar1(col) rho 3 0.500 -9.5e-01 0.95 G
6 R.sigma2 R_var 0 11346.807 1.0e-06 Inf R
--- Starting EM Warmup ---
EM Warmup: starting theta:
block 9077 ar1(row) 9077 rho.ar1(row) 0.5 ar1(col) 9077 rho.ar1(col) 0.5 R.sigma2 11350
EM iter 1: logLik=-2191.7556; theta: block 5706 ar1(row) 6221 rho.ar1(row) 0.5 ar1(col) 5612 rho.ar1(col) 0.5 R.sigma2 5527
EM iter 2: logLik=-2082.1793; theta: block 3624 ar1(row) 4875 rho.ar1(row) 0.5 ar1(col) 3969 rho.ar1(col) 0.5 R.sigma2 5689
EM iter 3 : logLik decreased or failed. Stopping EM.
EM Warmup: ending theta:
block 3624 ar1(row) 4875 rho.ar1(row) 0.5 ar1(col) 3969 rho.ar1(col) 0.5 R.sigma2 5689
--- EM Warmup Complete. Starting AI-REML ---
Starting AI-REML logLik = -2090.6822
Iter LogLik Sigma2 DF wall Restrained
1 -2045.1982 4323.264 370 09:46:39 ( 2 restrained)
2 -2010.6540 3285.681 370 09:46:39 ( 0 restrained)
3 -1914.0161 1636.124 370 09:46:39 ( 2 restrained)
4 -1817.2993 449.800 370 09:46:40 ( 0 restrained)
5 -1817.2993 449.800 370 09:46:40 ( 0 restrained)
Converged at iter 5 by tolerance(s): delta_theta=0.00e+00, delta_loglik=0.00e+00
Main AI-REML Loop finished. Combining results.
solveMME_cpp: adding nugget 4.5665e-08 to MME diagonal (scaled from median diag)
# P-spline spatial (like SpATS)
spatial_spline <- mandala(
fixed = yield ~ genotype,
random = ~ pspline2D(row.num, col.num, nseg = c(10, 10)),
data = field_data
)Initial data rows: 400
Final data rows after NA handling: 400
Explicit param_df Check:
name type vc_idx init lower upper origin
1 sf(row.num) var 1 9077.445 1e-06 Inf G
2 sf(col.num) var 2 9077.445 1e-06 Inf G
3 sf(row.num):sf(col.num) var 3 9077.445 1e-06 Inf G
4 R.sigma2 R_var 0 11346.807 1e-06 Inf R
--- Starting EM Warmup ---
EM Warmup: starting theta:
sf(row.num) 9077 sf(col.num) 9077 sf(row.num):sf(col.num) 9077 R.sigma2 11350
EM iter 1: logLik=-2195.7708; theta: sf(row.num) 4637 sf(col.num) 5088 sf(row.num):sf(col.num) 84040 R.sigma2 5354
EM iter 2: logLik=-2190.9536; theta: sf(row.num) 3189 sf(col.num) 3472 sf(row.num):sf(col.num) 69630 R.sigma2 5543
EM iter 3 : logLik decreased or failed. Stopping EM.
EM Warmup: ending theta:
sf(row.num) 3189 sf(col.num) 3472 sf(row.num):sf(col.num) 69630 R.sigma2 5543
--- EM Warmup Complete. Starting AI-REML ---
Starting AI-REML logLik = -2204.2015
Iter LogLik Sigma2 DF wall Restrained
[STABILIZING] Adding nugget 80785 to V diagonal...
1 -2189.1852 4212.527 370 09:46:42 ( 0 restrained)
[STABILIZING] Adding nugget 61398 to V diagonal...
2 -2185.4598 3201.520 370 09:46:43 ( 0 restrained)
[STABILIZING] Adding nugget 46663 to V diagonal...
3 -2185.4598 3201.520 370 09:46:43 ( 0 restrained)
Converged at iter 3 by tolerance(s): delta_theta=0.00e+00, delta_loglik=0.00e+00
Main AI-REML Loop finished. Combining results.
solveMME_cpp: adding nugget 4.32972e-10 to MME diagonal (scaled from median diag)
# Variogram diagnostics
mandala_variogram(spatial_ar1, data = field_data, plot_type = "3d")
$variogram_grid
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0.0000 355.5844 361.6032 381.7681 382.7147 379.9571 337.1248 359.5623
[2,] 347.9895 351.6894 365.3962 344.3001 321.6875 356.6724 322.2316 324.6279
[3,] 378.7237 360.3272 357.4521 377.8825 360.6535 365.5304 367.0741 333.9328
[4,] 404.6727 363.3130 372.8068 399.2616 359.9228 362.0562 352.7973 352.9689
[5,] 397.4511 352.6807 373.0921 362.2365 371.5875 375.2162 330.9416 320.7431
[6,] 353.8009 370.2667 371.3818 356.5063 380.6897 369.7193 319.7332 356.9936
[7,] 359.5572 345.8470 340.3978 365.5048 416.8611 359.1009 377.0356 338.1400
[8,] 395.9552 368.8571 340.5346 360.7343 344.4998 359.8088 354.5798 333.8950
[9,] 344.9271 333.9406 366.0959 369.0670 342.2571 365.8749 386.0688 344.5511
[10,] 357.3428 367.7026 373.7245 343.9861 338.4057 359.5870 312.9947 316.2253
[11,] 339.2200 348.4145 353.5787 367.9297 352.8397 354.1340 356.1588 333.3702
[12,] 369.3673 340.8823 349.8764 333.8020 388.7670 331.9575 364.1015 339.2789
[13,] 335.5056 338.7429 310.7402 331.2562 348.4698 321.3879 317.3459 307.4377
[14,] 313.4712 300.5438 333.9186 298.8817 367.8028 328.9913 310.5807 313.3008
[15,] 352.6354 324.8132 302.2188 295.1411 352.5412 330.5114 335.1618 301.6898
[16,] 388.8019 306.2171 295.4263 340.2208 310.6522 332.5873 272.7431 313.0413
[17,] 418.9894 302.1247 332.6062 308.8234 325.5908 338.2082 308.4058 307.3361
[18,] 265.3884 260.2049 267.7542 271.4679 296.3420 316.3267 264.1340 251.7843
[19,] 252.2820 275.2954 291.1004 255.0350 243.6807 262.3019 233.8085 279.1208
[20,] 244.4341 351.9538 218.6718 244.7218 351.0687 289.6907 344.0927 261.4927
[,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
[1,] 340.1506 379.3093 355.4858 379.7839 330.9003 411.8732 403.6736 348.3158
[2,] 347.9306 390.2099 376.8022 354.3857 322.1243 359.9945 409.0841 338.2805
[3,] 323.4425 349.3430 337.9407 340.7461 373.3889 373.9389 365.4323 319.5539
[4,] 346.6209 344.3701 343.7865 333.9007 370.6289 362.8362 332.2872 346.1389
[5,] 355.2172 326.5175 362.2429 357.2891 374.9297 385.5752 364.1155 296.7475
[6,] 393.0636 364.3055 369.3757 329.2090 336.6165 349.7404 350.6253 313.4338
[7,] 348.2321 330.9347 339.4475 362.2733 379.1089 367.4268 362.8258 313.7278
[8,] 349.3773 360.8034 383.9056 347.8381 406.0388 442.4326 380.6709 323.5402
[9,] 333.0091 360.7358 341.1594 350.0319 329.9129 406.8976 425.1001 346.5570
[10,] 299.3399 356.2518 362.0160 357.2685 347.5804 427.9291 371.2712 277.3185
[11,] 326.9958 331.6337 355.5128 325.2180 370.2294 406.4655 328.5168 331.5832
[12,] 314.6410 366.9146 379.1604 303.1218 385.5815 285.6354 357.4575 338.2756
[13,] 346.9350 388.8369 316.7714 362.1776 319.4279 346.9270 363.2506 311.6717
[14,] 390.9135 342.0304 250.3340 322.3713 304.6549 320.5554 286.9520 230.8790
[15,] 371.8093 281.5493 284.9477 337.5972 302.5873 358.2381 341.5831 284.2900
[16,] 325.2214 343.4749 273.2758 284.6864 358.8715 389.1868 286.0603 350.3332
[17,] 322.2934 304.8651 332.6387 228.4612 321.6942 282.5205 249.4250 303.2814
[18,] 260.4672 247.1949 282.2658 282.6514 330.3324 324.1857 289.4195 187.8139
[19,] 267.1919 221.9043 279.6216 307.6188 234.4703 333.9107 267.3115 279.6170
[20,] 214.0049 384.3724 259.1912 478.1344 290.3291 345.0417 338.3152 207.3991
[,17] [,18] [,19] [,20]
[1,] 302.8967 325.9168 323.1332 381.7119
[2,] 289.1642 323.0647 339.7898 365.8393
[3,] 329.6576 284.0945 315.0045 326.7257
[4,] 299.7980 309.1581 222.7484 281.4843
[5,] 262.6339 260.8143 280.6553 228.0663
[6,] 303.0905 253.0096 300.8841 247.1592
[7,] 321.3523 285.5197 279.2960 292.1153
[8,] 319.1517 284.4815 377.7277 348.8573
[9,] 338.2770 360.9371 294.0159 348.1294
[10,] 245.8147 292.8994 274.7369 339.0107
[11,] 235.1054 310.4802 291.6911 279.2963
[12,] 356.1252 309.9818 282.9170 354.6665
[13,] 282.4063 219.0632 289.3670 251.5588
[14,] 260.5664 364.8574 260.1917 449.7901
[15,] 451.6144 295.1720 235.4910 260.5914
[16,] 240.5888 285.2420 264.1028 220.1449
[17,] 314.8592 372.7135 285.8267 339.1800
[18,] 215.0838 340.4045 245.9681 235.9557
[19,] 218.2486 293.0099 260.9140 NA
[20,] 269.2260 157.2349 NA NA
$counts
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
[1,] 1 380 360 340 320 300 280 260 240 220 200 180 160
[2,] 380 722 684 646 608 570 532 494 456 418 380 342 304
[3,] 360 684 648 612 576 540 504 468 432 396 360 324 288
[4,] 340 646 612 578 544 510 476 442 408 374 340 306 272
[5,] 320 608 576 544 512 480 448 416 384 352 320 288 256
[6,] 300 570 540 510 480 450 420 390 360 330 300 270 240
[7,] 280 532 504 476 448 420 392 364 336 308 280 252 224
[8,] 260 494 468 442 416 390 364 338 312 286 260 234 208
[9,] 240 456 432 408 384 360 336 312 288 264 240 216 192
[10,] 220 418 396 374 352 330 308 286 264 242 220 198 176
[11,] 200 380 360 340 320 300 280 260 240 220 200 180 160
[12,] 180 342 324 306 288 270 252 234 216 198 180 162 144
[13,] 160 304 288 272 256 240 224 208 192 176 160 144 128
[14,] 140 266 252 238 224 210 196 182 168 154 140 126 112
[15,] 120 228 216 204 192 180 168 156 144 132 120 108 96
[16,] 100 190 180 170 160 150 140 130 120 110 100 90 80
[17,] 80 152 144 136 128 120 112 104 96 88 80 72 64
[18,] 60 114 108 102 96 90 84 78 72 66 60 54 48
[19,] 40 76 72 68 64 60 56 52 48 44 40 36 32
[20,] 20 38 36 34 32 30 28 26 24 22 20 18 16
[,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] 140 120 100 80 60 40 20
[2,] 266 228 190 152 114 76 38
[3,] 252 216 180 144 108 72 36
[4,] 238 204 170 136 102 68 34
[5,] 224 192 160 128 96 64 32
[6,] 210 180 150 120 90 60 30
[7,] 196 168 140 112 84 56 28
[8,] 182 156 130 104 78 52 26
[9,] 168 144 120 96 72 48 24
[10,] 154 132 110 88 66 44 22
[11,] 140 120 100 80 60 40 20
[12,] 126 108 90 72 54 36 18
[13,] 112 96 80 64 48 32 16
[14,] 98 84 70 56 42 28 14
[15,] 84 72 60 48 36 24 12
[16,] 70 60 50 40 30 20 10
[17,] 56 48 40 32 24 16 8
[18,] 42 36 30 24 18 12 6
[19,] 28 24 20 16 12 8 4
[20,] 14 12 10 8 6 4 2
$row_lags
[1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
$col_lags
[1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
mandala_variogram(spatial_ar1, data = field_data, plot_type = "2d")
lag_distance semivariance n_pairs
1 0.5 351.7870 760
2 1.5 360.9136 1442
3 2.5 369.2187 2696
4 3.5 369.5161 3156
5 4.5 361.7628 4634
6 5.5 362.7269 4312
7 6.5 358.1627 4504
8 7.5 351.5907 5474
9 8.5 350.5858 5804
10 9.5 356.7752 5938
11 10.5 352.5508 5060
12 11.5 347.4710 4860
13 12.5 344.4080 5814
14 13.5 347.2194 4824
15 14.5 350.8377 4688
16 15.5 340.3996 3634
17 16.5 325.7296 3508
18 17.5 305.5346 2876
19 18.5 290.5413 2306
20 19.5 304.9089 1660
21 20.5 279.9320 704
22 21.5 320.7736 566
23 22.5 275.6160 300
24 23.5 309.2576 140
25 24.5 270.9355 110
26 25.5 222.3228 20
27 26.5 260.6703 10
# Spatial fitted value plots
plot_mandala_spatial(spatial_ar1, field_data,
response = "yield", geno = "genotype",
row = "row", col = "col")
Notes:
- The predictions are obtained by averaging across the hypertable
calculated from model terms constructed solely from factors in
the averaging and classify sets.
- The simple averaging set: (none)
- The ignored set: block, ar1(row), ar1(col)

lme4 Spatial
# lme4 does not natively support AR1 or spatial covariance
# You need extensions like nlme or spaMM
# Basic approximation with row/col as random:
lme4_spatial <- lmer(
yield ~ genotype + (1|row) + (1|col),
data = field_data
)
# This treats row/col as independent - no correlation structureDiagnostics
lme4 Diagnostics
diag_data <- data.frame(
Fitted = fitted(lme4_model),
Residuals = residuals(lme4_model)
)
p1 <- ggplot(diag_data, aes(x = Fitted, y = Residuals)) +
geom_point(alpha = 0.6, color = "#5D4E6D") +
geom_hline(yintercept = 0, linetype = "dashed", color = "#9B5B5B") +
geom_smooth(se = FALSE, color = "#8B9A6D") +
theme_minimal() +
labs(title = "Residuals vs Fitted")
p2 <- ggplot(diag_data, aes(sample = Residuals)) +
stat_qq(color = "#5D4E6D") +
stat_qq_line(color = "#9B5B5B") +
theme_minimal() +
labs(title = "Normal Q-Q Plot")
gridExtra::grid.arrange(p1, p2, ncol = 2)
Mandala Diagnostics
# Built-in diagnostic plots
mandala_diagnostic_plots(model, response = "yield")
# Includes:
# - Residuals vs fitted
# - Q-Q plot
# - Histogram of residuals
# - Observed vs predictedKey Differences
| Task | Mandala | lme4 |
|---|---|---|
| Random intercept | random = ~ block |
(1\|block) |
| Variance components | $varcomp |
VarCorr() |
| BLUPs | mandala_predict() |
ranef() |
| Heritability | Built-in h2_estimates() |
Manual calculation |
| AR1 spatial | ar1(row) + ar1(col) |
Not supported |
| P-spline spatial | pspline2D() |
Not supported |
| Variograms | mandala_variogram() |
Not supported |
| Diagnostics | mandala_diagnostic_plots() |
Manual with ggplot2 |
| Genomic models | GM() |
Not supported |
When to Use Each
Use Mandala for:
- Agricultural field trials
- Spatial correlation modeling (AR1, P-splines)
- Variogram diagnostics
- Quick heritability estimates
- Genomic prediction (GBLUP)
Use lme4 for:
- General mixed models outside agriculture
- Complex random effect structures
- Generalized linear mixed models (GLMMs)
- Large documentation and community support
Session Information
sessionInfo()R version 4.5.2 (2025-10-31)
Platform: aarch64-apple-darwin20
Running under: macOS Tahoe 26.2
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: America/New_York
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_4.0.2 dplyr_1.2.0 lmerTest_3.2-0 lme4_1.1-38 Matrix_1.7-4
[6] mandala_1.0.1
loaded via a namespace (and not attached):
[1] generics_0.1.4 lattice_0.22-7 digest_0.6.39
[4] magrittr_2.0.4 evaluate_1.0.5 grid_4.5.2
[7] RColorBrewer_1.1-3 splines2_0.5.4 fastmap_1.2.0
[10] maps_3.4.3 jsonlite_2.0.0 gridExtra_2.3
[13] mgcv_1.9-3 spam_2.11-3 viridisLite_0.4.2
[16] scales_1.4.0 numDeriv_2016.8-1.1 reformulas_0.4.4
[19] Rdpack_2.6.5 cli_3.6.5 rlang_1.1.7
[22] rbibutils_2.4.1 splines_4.5.2 withr_3.0.2
[25] yaml_2.3.12 tools_4.5.2 nloptr_2.2.1
[28] minqa_1.2.8 boot_1.3-32 vctrs_0.7.1
[31] R6_2.6.1 lifecycle_1.0.5 MASS_7.3-65
[34] pkgconfig_2.0.3 pillar_1.11.1 gtable_0.3.6
[37] glue_1.8.0 Rcpp_1.1.1 fields_17.1
[40] xfun_0.56 tibble_3.3.1 tidyselect_1.2.1
[43] knitr_1.51 farver_2.1.2 htmltools_0.5.9
[46] nlme_3.1-168 labeling_0.4.3 rmarkdown_2.30
[49] dotCall64_1.2 compiler_4.5.2 S7_0.2.1