3. Performance Benchmark with other packages"

This vignette presents some performance tests ran between fundiversity and other functional diversity packages. Note that to avoid the dependency on other packages, this vignette is pre-computed.

Other packages to compute FD indices

Main functions

Here is a table that summarizes the comparable functions (and their arguments) for functions included in fundiversity. Note that the package name is indicated before :: followed by the function name.

| Index Type | Index Name | Source | fundiversity function | Equivalent Functions | |:-----------------|:--------------------------------------------------|:------------------------------|:------------------------|----------------------| | α-diversity | Functional Dispersion (FDis) | @Laliberte_distancebased_2010 | fd_fdis() | ~~BAT::dispersion()~~ (doesn't compute FDis)
FD::fdisp()
~~hillR::hill_func()~~ (actually rely on FD for FDis computations and standardize the traits without telling the user)
mFD::alpha.fd.multidim(..., ind_vect = "fdis") | | α-diversity | Functional Divergence (FDiv) | @Villeger_New_2008 | fd_fdiv() | mFD::alpha.fd.multidim(..., ind_vect = "fdiv") | | α-diversity | Functional Evenness (FEve) | @Villeger_New_2008 | fd_feve() | mFD::alpha.fd.multidim(..., ind_vect = "feve") | | α-diversity | Functional Richness (FRic) | @Villeger_New_2008 | fd_fric() | BAT::alpha() (tree, not strictly equal)
BAT::hull.alpha() (hull)
mFD::alpha.fd.multidim(..., ind_vect = "fric") | | α-diversity | Rao's Quadratic Entropy (Q) | @Villeger_Decomposing_2013 | fd_raoq() | adiv::QE()
BAT::rao()
hillR::hill_func() (standardize traits without warning)
mFD::alpha.fd.hill(..., q = 2, tau = "max") (returns a slightly modified version of Q according to @Ricotta_Diversity_2009) | | β-diversity | Functional Richness Intersection (FRic_intersect) | @Rao_Diversity_1982 | fd_fric_intersect() | betapart::functional.beta.pair()
hillR::hill_func_parti_pairwise() |

The other packages are thus: adiv [@Pavoine_adiv_2020], BAT [@Cardoso_BAT_2015], betapart [@Baselga_betapart_2012], FD [@Laliberte_FD_2014], hillR [@Li_hillR_2018], and mFD [@Magneville_mFD_2022]. For fairness of comparison, even if FD::dbFD() contains most indices we're not considering it as it computes all indices together for each call, and would necessarily be slower.

Benchmark between packages

We will now benchmark the functions included in fundiversity with the corresponding function in other packages using the microbenchmark::microbenchmark() function. We will use the fairly small (~220 species, 8 sites, 4 traits) provided dataset in fundiversity.

tictoc::tic()  # Time execution of vignette
library(fundiversity)
data("traits_birds", package = "fundiversity")
data("site_sp_birds", package = "fundiversity")

dist_traits_birds <- dist(traits_birds)

Functional Dispersion (FDis)

fdis_bench <- microbenchmark::microbenchmark(
  fundiversity = {
    fundiversity::fd_fdis(traits_birds, site_sp_birds)
  },
  FD = {
    FD::fdisp(dist_traits_birds, site_sp_birds)
  },
  mFD = {
    mFD::alpha.fd.multidim(
    traits_birds, site_sp_birds, ind_vect = "fdis",
    scaling = FALSE, verbose = FALSE, details_returned = FALSE
  )
  },
  times = 30
)

ggplot2::autoplot(fdis_bench) +
  labs(title = "Functional Dispersion (FDis)")

plot of chunk bench-fdis

Functional Divergence (FDiv)

fdiv_bench <- microbenchmark::microbenchmark(
  fundiversity = fd_fdiv(traits_birds, site_sp_birds),
  mFD = mFD::alpha.fd.multidim(
    traits_birds, site_sp_birds, ind_vect = "fdiv",
    scaling = FALSE, verbose = FALSE
  ),
  times = 30
)

ggplot2::autoplot(fdiv_bench) +
  labs(title = "Functional Divergence (FDiv)")

plot of chunk bench-fdiv

Functional Evenness (FEve)

feve_bench <- microbenchmark::microbenchmark(
  fundiversity = fd_feve(traits_birds, site_sp_birds),
  mFD = mFD::alpha.fd.multidim(
    traits_birds, site_sp_birds, ind_vect = "feve",
    scaling = FALSE, verbose = FALSE
  ),
  times = 30
)

ggplot2::autoplot(feve_bench) +
  labs(title = "Functional Evenness (FEve)")

plot of chunk bench-feve

Functional Richness (FRic)

fric_bench <- microbenchmark::microbenchmark(
  fundiversity = fd_fric(traits_birds, site_sp_birds),
  BAT_tree = BAT::alpha(
    site_sp_birds, traits_birds
  ),
  BAT_alpha_hull = BAT::hull.alpha(
    BAT::hull.build(site_sp_birds, traits_birds)
  ),
  mFD = mFD::alpha.fd.multidim(
    traits_birds, site_sp_birds, ind_vect = "fric",
    scaling = FALSE, verbose = FALSE
  ),
  times = 30
)

ggplot2::autoplot(fric_bench) +
  labs(title = "Functional Richness (FRic)")

plot of chunk bench-fric

Functional Richness Intersection (FRic_intersect)

fric_bench <- microbenchmark::microbenchmark(
  fundiversity  = fd_fric_intersect(traits_birds, site_sp_birds) ,
  betapart = betapart::functional.beta.pair(
    site_sp_birds, traits_birds
  ),
  hillR = hillR::hill_func_parti_pairwise(
    site_sp_birds, traits_birds, .progress = FALSE
  ),
  times = 30
)

ggplot2::autoplot(fric_bench) +
  labs(title = "Functional Richness Intersection (FRic)")

plot of chunk bench-fric-intersect

Rao's Quadratic Entropy (Q)

raoq_bench <- fric_bench <- microbenchmark::microbenchmark(
  fundiversity = fd_raoq(traits_birds, site_sp_birds),
  adiv= adiv::QE(
    site_sp_birds, dist_traits_birds
  ),
  BAT_rao           = BAT::rao(
    site_sp_birds, distance = traits_birds
  ),
  hillR_hill_func   = hillR::hill_func(
    site_sp_birds, traits_birds, fdis = FALSE
  ),
  mFD_alpha_fd_hill = mFD::alpha.fd.hill(
    site_sp_birds, dist_traits_birds, q = 2,
    tau = "max"
  ),
  times = 30
)

ggplot2::autoplot(raoq_bench) +
  labs(title = "Rao's Quadatric Entropy (Q)")

plot of chunk bench-raoq

Benchmark within fundiversity

We now proceed to the performance evaluation of functions within fundiversity with datasets of increasing sizes.

Increasing the number of species

make_more_sp <- function(n) {
  traits <- do.call(rbind, replicate(n, traits_birds, simplify = FALSE))
  row.names(traits) <- paste0("sp", seq_len(nrow(traits)))

  site_sp <- do.call(cbind, replicate(n, site_sp_birds, simplify = FALSE))
  colnames(site_sp) <- paste0("sp", seq_len(ncol(site_sp)))

  list(tr = traits, si = site_sp)
}

null_sp_1000   <- make_more_sp(5)
null_sp_10000  <- make_more_sp(50)
null_sp_100000 <- make_more_sp(500)

Functional Richness

bench_sp_fric <- microbenchmark::microbenchmark(
  species_200    = fd_fric(     traits_birds, site_sp_birds),
  species_1000   = fd_fric(  null_sp_1000$tr, null_sp_1000$si),
  species_10000  = fd_fric( null_sp_10000$tr, null_sp_10000$si),
  species_100000 = fd_fric(null_sp_100000$tr, null_sp_100000$si),
  times = 30
)

ggplot2::autoplot(bench_sp_fric)

Performance comparison of fd_fric() with increasing number of species.

bench_sp_fric
#> Unit: milliseconds
#>            expr        min         lq       mean     median         uq        max neval  cld
#>     species_200   12.40461   12.86473   13.63794   13.65822   13.96949   15.64313    30 a   
#>    species_1000   23.31024   23.98235   24.77462   24.52898   24.99526   32.20389    30  b  
#>   species_10000  152.16972  153.69475  155.65197  154.41463  155.87235  167.39586    30   c 
#>  species_100000 1538.24210 1552.02784 1573.05390 1571.92017 1587.70159 1629.76043    30    d

Functional Divergence

bench_sp_fdiv <- microbenchmark::microbenchmark(
  species_200    = fd_fdiv(     traits_birds, site_sp_birds),
  species_1000   = fd_fdiv(  null_sp_1000$tr, null_sp_1000$si),
  species_10000  = fd_fdiv( null_sp_10000$tr, null_sp_10000$si),
  species_100000 = fd_fdiv(null_sp_100000$tr, null_sp_100000$si),
  times = 30
)

ggplot2::autoplot(bench_sp_fdiv)

Performance comparison of fd_fdiv() with increasing number of species.

bench_sp_fdiv
#> Unit: milliseconds
#>            expr        min         lq       mean     median         uq        max neval cld
#>     species_200   38.18281   39.33241   41.03782   39.80735   40.19474   63.38092    30 a  
#>    species_1000   52.21140   53.58856   54.88775   54.00482   54.58979   61.12244    30 a  
#>   species_10000  215.96505  218.21261  227.32449  221.46767  231.33971  262.64920    30  b 
#>  species_100000 1996.22764 2035.16809 2090.07993 2068.75306 2097.02749 2805.37816    30   c

Rao's Quadratic Entropy

bench_sp_raoq <- microbenchmark::microbenchmark(
  species_200    = fd_raoq(     traits_birds, site_sp_birds),
  species_1000   = fd_raoq(  null_sp_1000$tr, null_sp_1000$si),
  species_10000  = fd_raoq( null_sp_10000$tr, null_sp_10000$si),
  times = 30
)

ggplot2::autoplot(bench_sp_raoq)

Performance comparison of fd_raoq() with increasing number of species.

bench_sp_raoq
#> Unit: milliseconds
#>           expr         min           lq         mean       median           uq          max neval cld
#>    species_200    1.537703     1.751935     1.954434     1.950017     2.041037     3.230497    30  a 
#>   species_1000   31.957110    34.274255    39.128452    35.156704    37.556228    66.194976    30  a 
#>  species_10000 9890.756358 10163.144236 11121.366410 11055.979331 11964.694993 13632.668874    30   b

Functional Evenness

bench_sp_feve <- microbenchmark::microbenchmark(
  species_200    = fd_feve(     traits_birds, site_sp_birds),
  species_1000   = fd_feve(  null_sp_1000$tr, null_sp_1000$si),
  species_10000  = fd_feve( null_sp_10000$tr, null_sp_10000$si),
  times = 15
)

ggplot2::autoplot(bench_sp_feve)

Performance comparison of fd_feve() with increasing number of species.

bench_sp_feve
#> Unit: milliseconds
#>           expr         min          lq        mean      median          uq         max neval cld
#>    species_200    22.25434    23.58857    26.28398    24.66652    25.41282    49.21613    15  a 
#>   species_1000   133.12192   148.39296   167.29508   163.98844   186.30949   212.94652    15  a 
#>  species_10000 26209.90991 27553.75296 28085.39492 28186.57578 28599.03918 29311.05335    15   b

Comparing between indices

all_bench_sp <- list(fric = bench_sp_fric,
                     fdiv = bench_sp_fdiv,
                     raoq = bench_sp_raoq,
                     feve = bench_sp_feve) %>%
  bind_rows(.id = "fd_index") %>%
  mutate(n_sp = gsub("species_", "", expr) %>%
           as.numeric())

all_bench_sp %>%
  ggplot(aes(n_sp, time * 1e-9, color = fd_index)) +
  geom_point(alpha = 1/3) +
  geom_smooth() +
  scale_x_log10() +
  scale_y_log10() +
  scale_color_brewer(type = "qual",
                     labels = c(fric = "FRic", fdiv = "FDiv", raoq = "Rao's Q",
                                feve = "FEve")) +
  labs(title = "Performance comparison between indices",
       x = "# of species", y = "Time (in seconds)",
       color = "FD index") +
  theme_bw() +
  theme(aspect.ratio = 1)

Performance comparison between functions for distinct indices in fundiversity with increasing number of species. Smoothed trend lines and standard error envelopes ares shown.

Increasing the number of sites

make_more_sites <- function(n) {
  site_sp <- do.call(rbind, replicate(n, site_sp_birds, simplify = FALSE))
  rownames(site_sp) <- paste0("s", seq_len(nrow(site_sp)))

  site_sp
}

site_sp_100   <- make_more_sites(12)
site_sp_1000  <- make_more_sites(120)
site_sp_10000 <- make_more_sites(1200)

Functional Richness

bench_sites_fric <- microbenchmark::microbenchmark(
  sites_10    = fd_fric(traits_birds, site_sp_birds),
  sites_100   = fd_fric(traits_birds, site_sp_100),
  sites_1000  = fd_fric(traits_birds, site_sp_1000),
  sites_10000 = fd_fric(traits_birds, site_sp_10000),
  times = 15
)

ggplot2::autoplot(bench_sites_fric)

Performance comparison of fd_fric() with increasing number of sites.

bench_sites_fric
#> Unit: milliseconds
#>         expr        min         lq       mean     median         uq        max neval  cld
#>     sites_10   12.60195   13.45944   14.88054   13.96007   14.29602   21.66510    15 a   
#>    sites_100   45.57530   47.25923   49.87524   48.75620   52.29567   56.19952    15  b  
#>   sites_1000  372.72833  386.35628  400.43169  395.60903  408.99573  449.87164    15   c 
#>  sites_10000 3833.05136 3885.11306 3921.60544 3919.29055 3942.32492 4016.96576    15    d

Functional Divergence

bench_sites_fdiv <- microbenchmark::microbenchmark(
  sites_10    = fd_fdiv(traits_birds, site_sp_birds),
  sites_100   = fd_fdiv(traits_birds, site_sp_100),
  sites_1000  = fd_fdiv(traits_birds, site_sp_1000),
  sites_10000 = fd_fdiv(traits_birds, site_sp_10000),
  times = 15
)

ggplot2::autoplot(bench_sites_fdiv)

Performance comparison of fd_fdiv() with increasing number of sites.

bench_sites_fdiv
#> Unit: milliseconds
#>         expr        min         lq       mean     median         uq        max neval  cld
#>     sites_10   38.17040   39.17880   40.79484   39.59029   42.08936   45.43952    15 a   
#>    sites_100   85.09805   85.99399   94.77048   86.88365   96.33675  149.45931    15  b  
#>   sites_1000  538.76135  545.03628  582.84610  564.85683  605.87486  677.86382    15   c 
#>  sites_10000 5278.55172 5336.69296 5405.90861 5378.53730 5458.24597 5552.26594    15    d

Rao's Quadratic Entropy

bench_sites_raoq = microbenchmark::microbenchmark(
  sites_10    = fd_raoq(traits = NULL, site_sp_birds, dist_traits_birds),
  sites_100   = fd_raoq(traits = NULL, site_sp_100,   dist_traits_birds),
  sites_1000  = fd_raoq(traits = NULL, site_sp_1000,  dist_traits_birds),
  sites_10000 = fd_raoq(traits = NULL, site_sp_10000, dist_traits_birds),
  times = 15
)

ggplot2::autoplot(bench_sites_raoq)

Performance comparison of fd_raoq() with increasing number of sites.

bench_sites_raoq
#> Unit: milliseconds
#>         expr          min           lq         mean       median           uq          max neval cld
#>     sites_10     1.443757     1.717630     1.887153     1.861230     2.037991     2.518933    15  a 
#>    sites_100     5.689849     6.004428     6.718675     6.178415     6.460348    13.786219    15  a 
#>   sites_1000   158.130064   158.814848   160.907719   159.296631   163.977418   166.066294    15  a 
#>  sites_10000 16296.391504 17530.369693 18080.130808 18193.538354 18411.571843 21033.249202    15   b

Functional Evenness

bench_sites_feve <- microbenchmark::microbenchmark(
  sites_10    = fd_feve(traits = NULL, site_sp_birds, dist_traits_birds),
  sites_100   = fd_feve(traits = NULL, site_sp_100,   dist_traits_birds),
  sites_1000  = fd_feve(traits = NULL, site_sp_1000,  dist_traits_birds),
  sites_10000 = fd_feve(traits = NULL, site_sp_10000, dist_traits_birds),
  times = 15
)

ggplot2::autoplot(bench_sites_feve)

Performance comparison of fd_feve() with increasing number of sites

bench_sites_feve
#> Unit: milliseconds
#>         expr         min          lq        mean      median          uq         max neval cld
#>     sites_10    20.26885    20.79379    25.80265    21.06491    21.39182    90.92815    15 a  
#>    sites_100   113.64419   115.81009   123.60943   118.04145   123.54457   185.57582    15 a  
#>   sites_1000  1034.37573  1107.36408  1146.78358  1119.68000  1134.07348  1668.68480    15  b 
#>  sites_10000 10779.65515 10969.94333 11249.27062 11090.00824 11317.37080 12341.22800    15   c

Comparing between indices

all_bench_sites <- list(fric = bench_sites_fric,
                        fdiv = bench_sites_fdiv,
                        raoq = bench_sites_raoq,
                        feve = bench_sites_feve) %>%
  bind_rows(.id = "fd_index") %>%
  mutate(n_sites = gsub("sites", "", expr) %>%
           as.numeric())

all_bench_sites %>%
  ggplot(aes(n_sites, time * 1e-9, color = fd_index)) +
  geom_point(alpha = 1/3) +
  geom_smooth() +
  scale_x_log10() +
  scale_y_log10() +
  scale_color_brewer(type = "qual",
                     labels = c(fric = "FRic", fdiv = "FDiv", raoq = "Rao's Q",
                                feve = "FEve")) +
  labs(title = "Performance comparison between indices",
       x = "# of sites", y = "Time (in seconds)",
       color = "FD index") +
  theme_bw() +
  theme(aspect.ratio = 1)

Performance comparison between functions for distinct indices in fundiversity with increasing number of sites. Smoothed trend lines and standard error envelopes ares shown.

Session info of the machine on which the benchmark was ran and time it took to run

#>  seconds needed to generate this document: 1691.449 sec elapsed
#> ─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.2.1 (2022-06-23)
#>  os       Ubuntu 20.04.5 LTS
#>  system   x86_64, linux-gnu
#>  ui       RStudio
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Etc/UTC
#>  date     2022-11-15
#>  rstudio  2022.02.0+443 Prairie Trillium (server)
#>  pandoc   2.17.1.1 @ /usr/lib/rstudio-server/bin/quarto/bin/ (via rmarkdown)
#> 
#> ─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
#>  package           * version    date (UTC) lib source
#>  abind               1.4-5      2016-07-21 [1] CRAN (R 4.2.0)
#>  ade4                1.7-19     2022-04-19 [1] CRAN (R 4.2.0)
#>  adegraphics         1.0-16     2021-09-16 [1] CRAN (R 4.2.1)
#>  adiv                2.2        2022-10-06 [1] CRAN (R 4.2.1)
#>  ape                 5.6-2      2022-03-02 [1] CRAN (R 4.2.0)
#>  assertthat          0.2.1      2019-03-21 [3] CRAN (R 4.1.3)
#>  base64enc           0.1-3      2015-07-28 [1] CRAN (R 4.2.1)
#>  BAT                 2.9.2      2022-11-08 [1] CRAN (R 4.2.1)
#>  betapart            1.5.6      2022-04-06 [1] CRAN (R 4.2.1)
#>  cachem              1.0.6      2021-08-19 [3] CRAN (R 4.1.3)
#>  caret               6.0-93     2022-08-09 [1] CRAN (R 4.2.1)
#>  class               7.3-20     2022-01-13 [5] CRAN (R 4.1.2)
#>  cli                 3.4.1      2022-09-23 [1] CRAN (R 4.2.1)
#>  cluster             2.1.3      2022-03-28 [5] CRAN (R 4.1.3)
#>  clusterGeneration   1.3.7      2020-12-15 [1] CRAN (R 4.2.0)
#>  coda                0.19-4     2020-09-30 [1] CRAN (R 4.2.0)
#>  codetools           0.2-18     2020-11-04 [5] CRAN (R 4.0.3)
#>  colorspace          2.0-3      2022-02-21 [1] CRAN (R 4.2.0)
#>  combinat            0.0-8      2012-10-29 [1] CRAN (R 4.2.0)
#>  crayon              1.5.1      2022-03-26 [1] CRAN (R 4.2.0)
#>  data.table          1.14.2     2021-09-27 [1] CRAN (R 4.2.0)
#>  DBI                 1.1.2      2021-12-20 [3] CRAN (R 4.1.3)
#>  deldir              1.0-6      2021-10-23 [1] CRAN (R 4.2.1)
#>  dendextend          1.16.0     2022-07-04 [1] CRAN (R 4.2.1)
#>  digest              0.6.29     2021-12-01 [1] CRAN (R 4.2.0)
#>  doParallel          1.0.17     2022-02-07 [1] CRAN (R 4.2.1)
#>  doSNOW              1.0.20     2022-02-04 [1] CRAN (R 4.2.1)
#>  dplyr             * 1.0.10     2022-09-01 [1] CRAN (R 4.2.1)
#>  e1071               1.7-12     2022-10-24 [1] CRAN (R 4.2.1)
#>  ellipsis            0.3.2      2021-04-29 [1] CRAN (R 4.2.0)
#>  evaluate            0.18       2022-11-07 [1] CRAN (R 4.2.1)
#>  expm                0.999-6    2021-01-13 [1] CRAN (R 4.2.0)
#>  fansi               1.0.3      2022-03-24 [1] CRAN (R 4.2.0)
#>  farver              2.1.0      2021-02-28 [1] CRAN (R 4.2.0)
#>  fastcluster         1.2.3      2021-05-24 [1] CRAN (R 4.2.1)
#>  fastmap             1.1.0      2021-01-25 [1] CRAN (R 4.2.1)
#>  fastmatch           1.1-3      2021-07-23 [1] CRAN (R 4.2.0)
#>  FD                  1.0-12.1   2022-05-02 [1] CRAN (R 4.2.0)
#>  foreach             1.5.2      2022-02-02 [1] CRAN (R 4.2.1)
#>  fundiversity      * 0.2.1.9000 2022-04-12 [3] Github (bisaloo/fundiversity@87652ba)
#>  future              1.28.0     2022-09-02 [1] CRAN (R 4.2.1)
#>  future.apply        1.10.0     2022-11-05 [1] CRAN (R 4.2.1)
#>  generics            0.1.2      2022-01-31 [1] CRAN (R 4.2.0)
#>  geometry            0.4.6      2022-04-18 [1] CRAN (R 4.2.0)
#>  ggplot2           * 3.3.6      2022-05-03 [1] CRAN (R 4.2.0)
#>  globals             0.16.1     2022-08-28 [1] CRAN (R 4.2.1)
#>  glue                1.6.2      2022-02-24 [1] CRAN (R 4.2.0)
#>  gower               1.0.0      2022-02-03 [1] CRAN (R 4.2.1)
#>  gridExtra           2.3        2017-09-09 [1] CRAN (R 4.2.1)
#>  gtable              0.3.0      2019-03-25 [1] CRAN (R 4.2.0)
#>  hardhat             1.2.0      2022-06-30 [1] CRAN (R 4.2.1)
#>  here                1.0.1      2020-12-13 [3] CRAN (R 4.1.3)
#>  highr               0.9        2021-04-16 [1] CRAN (R 4.2.1)
#>  hillR               0.5.1      2021-03-02 [1] CRAN (R 4.2.0)
#>  hms                 1.1.1      2021-09-26 [1] CRAN (R 4.2.0)
#>  htmltools           0.5.3      2022-07-18 [1] CRAN (R 4.2.1)
#>  htmlwidgets         1.5.4      2021-09-08 [1] CRAN (R 4.2.1)
#>  httr                1.4.4      2022-08-17 [1] CRAN (R 4.2.1)
#>  hypervolume         3.0.4      2022-05-28 [1] CRAN (R 4.2.1)
#>  igraph              1.3.2      2022-06-13 [1] CRAN (R 4.2.0)
#>  interp              1.1-3      2022-07-13 [1] CRAN (R 4.2.1)
#>  ipred               0.9-13     2022-06-02 [1] CRAN (R 4.2.1)
#>  iterators           1.0.14     2022-02-05 [1] CRAN (R 4.2.1)
#>  itertools           0.1-3      2014-03-12 [1] CRAN (R 4.2.1)
#>  jpeg                0.1-9      2021-07-24 [1] CRAN (R 4.2.1)
#>  jsonlite            1.8.3      2022-10-21 [1] CRAN (R 4.2.1)
#>  KernSmooth          2.23-20    2021-05-03 [5] CRAN (R 4.0.5)
#>  knitr               1.40       2022-08-24 [1] CRAN (R 4.2.1)
#>  ks                  1.13.5     2022-04-14 [1] CRAN (R 4.2.1)
#>  lattice             0.20-45    2021-09-22 [3] CRAN (R 4.1.3)
#>  latticeExtra        0.6-30     2022-07-04 [1] CRAN (R 4.2.1)
#>  lava                1.7.0      2022-10-25 [1] CRAN (R 4.2.1)
#>  lifecycle           1.0.3      2022-10-07 [1] CRAN (R 4.2.1)
#>  listenv             0.8.0      2019-12-05 [1] CRAN (R 4.2.1)
#>  lpSolve             5.6.15     2020-01-24 [1] CRAN (R 4.2.0)
#>  lubridate           1.9.0      2022-11-06 [1] CRAN (R 4.2.1)
#>  magic               1.6-0      2022-02-09 [1] CRAN (R 4.2.0)
#>  magrittr            2.0.3      2022-03-30 [1] CRAN (R 4.2.0)
#>  maps                3.4.0      2021-09-25 [1] CRAN (R 4.2.0)
#>  MASS                7.3-58.1   2022-08-03 [3] CRAN (R 4.2.1)
#>  Matrix              1.4-1      2022-03-23 [3] CRAN (R 4.1.3)
#>  mclust              6.0.0      2022-10-31 [1] CRAN (R 4.2.1)
#>  memoise             2.0.1      2021-11-26 [3] CRAN (R 4.1.3)
#>  mFD                 1.0.2      2022-11-08 [1] CRAN (R 4.2.1)
#>  mgcv                1.8-40     2022-03-29 [5] CRAN (R 4.1.3)
#>  microbenchmark      1.4.9      2021-11-09 [3] CRAN (R 4.1.3)
#>  mnormt              2.1.0      2022-06-07 [1] CRAN (R 4.2.0)
#>  ModelMetrics        1.2.2.2    2020-03-17 [1] CRAN (R 4.2.1)
#>  multcomp            1.4-19     2022-04-26 [1] CRAN (R 4.2.0)
#>  munsell             0.5.0      2018-06-12 [1] CRAN (R 4.2.0)
#>  mvtnorm             1.1-3      2021-10-08 [1] CRAN (R 4.2.0)
#>  nlme                3.1-159    2022-08-09 [3] CRAN (R 4.2.1)
#>  nls2                0.3-3      2022-05-02 [1] CRAN (R 4.2.1)
#>  nnet                7.3-17     2022-01-13 [5] CRAN (R 4.1.2)
#>  numDeriv            2016.8-1.1 2019-06-06 [1] CRAN (R 4.2.0)
#>  palmerpenguins      0.1.1      2022-08-15 [1] CRAN (R 4.2.1)
#>  parallelly          1.32.1     2022-07-21 [1] CRAN (R 4.2.1)
#>  patchwork           1.1.2      2022-08-19 [1] CRAN (R 4.2.1)
#>  pdist               1.2.1      2022-05-02 [1] CRAN (R 4.2.1)
#>  permute             0.9-7      2022-01-27 [1] CRAN (R 4.2.0)
#>  phangorn            2.9.0      2022-06-16 [1] CRAN (R 4.2.0)
#>  phylobase           0.8.10     2020-03-01 [1] CRAN (R 4.2.1)
#>  phytools            1.0-3      2022-04-05 [1] CRAN (R 4.2.0)
#>  picante             1.8.2      2020-06-10 [1] CRAN (R 4.2.1)
#>  pillar              1.7.0      2022-02-01 [1] CRAN (R 4.2.0)
#>  pkgconfig           2.0.3      2019-09-22 [1] CRAN (R 4.2.0)
#>  plotrix             3.8-2      2021-09-08 [1] CRAN (R 4.2.0)
#>  plyr                1.8.7      2022-03-24 [1] CRAN (R 4.2.0)
#>  png                 0.1-7      2013-12-03 [1] CRAN (R 4.2.1)
#>  pracma              2.4.2      2022-09-22 [1] CRAN (R 4.2.1)
#>  prettyunits         1.1.1      2020-01-24 [1] CRAN (R 4.2.0)
#>  pROC                1.18.0     2021-09-03 [1] CRAN (R 4.2.1)
#>  prodlim             2019.11.13 2019-11-17 [1] CRAN (R 4.2.1)
#>  progress            1.2.2      2019-05-16 [1] CRAN (R 4.2.0)
#>  proto               1.0.0      2016-10-29 [1] CRAN (R 4.2.1)
#>  proxy               0.4-27     2022-06-09 [1] CRAN (R 4.2.1)
#>  purrr               0.3.4      2020-04-17 [1] CRAN (R 4.2.0)
#>  quadprog            1.5-8      2019-11-20 [1] CRAN (R 4.2.0)
#>  R6                  2.5.1      2021-08-19 [1] CRAN (R 4.2.0)
#>  raster              3.6-3      2022-09-18 [1] CRAN (R 4.2.1)
#>  rcdd                1.5        2021-11-18 [1] CRAN (R 4.2.1)
#>  RColorBrewer        1.1-3      2022-04-03 [1] CRAN (R 4.2.0)
#>  Rcpp                1.0.8.3    2022-03-17 [1] CRAN (R 4.2.0)
#>  recipes             1.0.3      2022-11-09 [1] CRAN (R 4.2.1)
#>  reshape2            1.4.4      2020-04-09 [1] CRAN (R 4.2.1)
#>  rgeos               0.5-9      2021-12-15 [1] CRAN (R 4.2.1)
#>  rgl                 0.110.2    2022-09-26 [1] CRAN (R 4.2.1)
#>  rlang               1.0.6      2022-09-24 [1] CRAN (R 4.2.1)
#>  rmarkdown           2.13       2022-03-10 [3] CRAN (R 4.1.3)
#>  rncl                0.8.6      2022-03-18 [1] CRAN (R 4.2.1)
#>  RNeXML              2.4.8      2022-10-19 [1] CRAN (R 4.2.1)
#>  rpart               4.1.16     2022-01-24 [5] CRAN (R 4.1.2)
#>  rprojroot           2.0.3      2022-04-02 [1] CRAN (R 4.2.1)
#>  rstudioapi          0.14       2022-08-22 [1] CRAN (R 4.2.1)
#>  sandwich            3.0-2      2022-06-15 [1] CRAN (R 4.2.0)
#>  scales              1.2.0      2022-04-13 [1] CRAN (R 4.2.0)
#>  scatterplot3d       0.3-41     2018-03-14 [1] CRAN (R 4.2.0)
#>  sessioninfo         1.2.2      2021-12-06 [3] CRAN (R 4.1.3)
#>  snow                0.4-4      2021-10-27 [1] CRAN (R 4.2.1)
#>  sp                  1.5-0      2022-06-05 [1] CRAN (R 4.2.0)
#>  stringi             1.7.6      2021-11-29 [1] CRAN (R 4.2.0)
#>  stringr             1.4.0      2019-02-10 [1] CRAN (R 4.2.0)
#>  survival            3.3-1      2022-03-03 [3] CRAN (R 4.1.3)
#>  terra               1.6-17     2022-09-10 [1] CRAN (R 4.2.1)
#>  TH.data             1.1-1      2022-04-26 [1] CRAN (R 4.2.0)
#>  tibble              3.1.7      2022-05-03 [1] CRAN (R 4.2.0)
#>  tictoc              1.0.1      2021-04-19 [3] CRAN (R 4.1.3)
#>  tidyr               1.2.1      2022-09-08 [1] CRAN (R 4.2.1)
#>  tidyselect          1.2.0      2022-10-10 [1] CRAN (R 4.2.1)
#>  timechange          0.1.1      2022-11-04 [1] CRAN (R 4.2.1)
#>  timeDate            4021.106   2022-09-30 [1] CRAN (R 4.2.1)
#>  utf8                1.2.2      2021-07-24 [1] CRAN (R 4.2.0)
#>  uuid                1.1-0      2022-04-19 [1] CRAN (R 4.2.1)
#>  vctrs               0.5.0      2022-10-22 [1] CRAN (R 4.2.1)
#>  vegan               2.6-2      2022-04-17 [1] CRAN (R 4.2.0)
#>  viridis             0.6.2      2021-10-13 [1] CRAN (R 4.2.1)
#>  viridisLite         0.4.0      2021-04-13 [1] CRAN (R 4.2.0)
#>  withr               2.5.0      2022-03-03 [1] CRAN (R 4.2.0)
#>  xfun                0.34       2022-10-18 [1] CRAN (R 4.2.1)
#>  XML                 3.99-0.12  2022-10-28 [1] CRAN (R 4.2.1)
#>  xml2                1.3.3      2021-11-30 [1] CRAN (R 4.2.1)
#>  yaml                2.3.6      2022-10-18 [1] CRAN (R 4.2.1)
#>  zoo                 1.8-10     2022-04-15 [1] CRAN (R 4.2.0)
#> 
#>  [1] /home/ke76dimu/R-library/4.2
#>  [2] /usr/local/lib/R/site-library
#>  [3] /data/library/4.1
#>  [4] /usr/lib/R/site-library
#>  [5] /usr/lib/R/library
#> 
#> ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

References



Try the fundiversity package in your browser

Any scripts or data that you put into this service are public.

fundiversity documentation built on Nov. 21, 2022, 5:07 p.m.