Skip to content

Instantly share code, notes, and snippets.

@njtierney
Created May 18, 2026 04:57
Show Gist options
  • Select an option

  • Save njtierney/34451da2c0f4787d9960ba7421d168b2 to your computer and use it in GitHub Desktop.

Select an option

Save njtierney/34451da2c0f4787d9960ba7421d168b2 to your computer and use it in GitHub Desktop.
set.seed(2026-05-18)
x <- rnorm(10, mean = 100, sd = 50)

r_mean <- mean(x)
r_sum_len <- sum(x) / length(x)
r_rowMean <- rowMeans(matrix(x, nrow = 1))

r_mean - r_sum_len
#> [1] -1.421085e-14
r_rowMean - r_sum_len
#> [1] 0
r_mean - r_rowMean
#> [1] -1.421085e-14

set.seed(2026-05-18)
m <- matrix(rnorm(5 * 10, mean = 100, sd = 50), nrow = 10, ncol = 5)
m
#>            [,1]      [,2]      [,3]      [,4]      [,5]
#>  [1,] 170.85870  43.74890 113.96289 116.35102 100.90945
#>  [2,]  63.59024  53.76279  58.34088 150.28400  40.72112
#>  [3,]  86.66491  84.65297 221.07509 141.38082  35.31416
#>  [4,] 153.67691 143.86892  65.48070 136.30960 130.82240
#>  [5,] 136.14942 135.91736  76.73630 154.20413 141.18348
#>  [6,]  34.84147  44.23442  99.50810  32.53873 103.94052
#>  [7,] 138.09817  27.04902 109.13887 141.58426 158.49895
#>  [8,] 165.78619 117.81007 146.65170 174.57560 101.84610
#>  [9,] 108.08085 109.55879 113.27596  82.04280 155.52896
#> [10,] 126.90754  83.35347  46.65164 107.87742  29.41182
via_mean <- apply(m, 1, mean)
via_rowMean <- rowMeans(m)
via_sum_n <- apply(m, 1, function(r) sum(r) / length(r))

via_mean - via_rowMean
#>  [1] -1.421085e-14  0.000000e+00  0.000000e+00  1.421085e-14  0.000000e+00
#>  [6]  7.105427e-15  1.421085e-14  0.000000e+00  1.421085e-14  1.421085e-14
via_mean - via_sum_n
#>  [1] -1.421085e-14  0.000000e+00  0.000000e+00  1.421085e-14  0.000000e+00
#>  [6]  7.105427e-15  1.421085e-14  0.000000e+00  1.421085e-14  1.421085e-14
via_rowMean - via_sum_n
#>  [1] 0 0 0 0 0 0 0 0 0 0

Created on 2026-05-18 with reprex v2.1.1

Session info

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.6.0 (2026-04-24)
#>  os       macOS Tahoe 26.3.1
#>  system   aarch64, darwin23
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Australia/Hobart
#>  date     2026-05-18
#>  pandoc   3.8.3 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#>  quarto   1.9.36 @ /usr/local/bin/quarto
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date (UTC) lib source
#>  cli           3.6.6   2026-04-09 [1] CRAN (R 4.6.0)
#>  digest        0.6.39  2025-11-19 [1] CRAN (R 4.6.0)
#>  evaluate      1.0.5   2025-08-27 [1] CRAN (R 4.6.0)
#>  fastmap       1.2.0   2024-05-15 [1] CRAN (R 4.6.0)
#>  fs            2.1.0   2026-04-18 [1] CRAN (R 4.6.0)
#>  glue          1.8.1   2026-04-17 [1] CRAN (R 4.6.0)
#>  htmltools     0.5.9   2025-12-04 [1] CRAN (R 4.6.0)
#>  knitr         1.51    2025-12-20 [1] CRAN (R 4.6.0)
#>  lifecycle     1.0.5   2026-01-08 [1] CRAN (R 4.6.0)
#>  otel          0.2.0   2025-08-29 [1] CRAN (R 4.6.0)
#>  reprex        2.1.1   2024-07-06 [1] CRAN (R 4.6.0)
#>  rlang         1.2.0   2026-04-06 [1] CRAN (R 4.6.0)
#>  rmarkdown     2.31    2026-03-26 [1] CRAN (R 4.6.0)
#>  rstudioapi    0.18.0  2026-01-16 [1] CRAN (R 4.6.0)
#>  sessioninfo   1.2.3   2025-02-05 [1] CRAN (R 4.6.0)
#>  withr         3.0.2   2024-10-28 [1] CRAN (R 4.6.0)
#>  xfun          0.57    2026-03-20 [1] CRAN (R 4.6.0)
#>  yaml          2.3.12  2025-12-10 [1] CRAN (R 4.6.0)
#> 
#>  [1] /Library/Frameworks/R.framework/Versions/4.6/Resources/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────
@MilesMcBain

Copy link
Copy Markdown
> all.equal(via_mean, via_rowMean)
# [1] TRUE
> all.equal(via_sum_n, via_rowMean)
# [1] TRUE

https://xkcd.com/3228/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment