Skip to contents

Overview

ppendemic provides access to accepted endemic plant taxonomic records from Peru. The current dataset, ppendemic_tab16, contains 8030 records from WCVP V-16, including taxa at species and infraspecific ranks.

The package is useful for:

  • exploring the taxonomic composition of Peru’s endemic flora;
  • checking whether a submitted plant name is listed as endemic;
  • comparing successive WCVP-derived versions of the endemic checklist; and
  • inspecting bibliographic metadata, including actual and nominal publication years.

Because the database includes infraspecific taxa, the number of rows must not be interpreted as the number of distinct species.

What Is Included

The datasets include accepted endemic taxa with:

  • accepted taxon name and taxonomic status;
  • family, genus, specific epithet, infraspecific rank and infraspecific epithet;
  • taxon authorship and publication metadata;
  • actual and nominal publication years; and
  • dataset version and extraction date.

The datasets do not include coordinates, departments, elevation, habitat, threat categories, or fine-scale distribution records. Geographic hotspot, conservation-priority, or range-size analyses require joining ppendemic with external occurrence or conservation datasets.

Datasets

dataset wcvp_version extraction_date records families genera
ppendemic_tab14 V-14 28-05-2025 7898 165 1116
ppendemic_tab15 V-15 06-01-2026 7892 165 1115
ppendemic_tab16 V-16 04-06-2026 8030 165 1121

ppendemic_tab16 is the latest dataset and should be used by default unless a reproducible analysis requires an older WCVP version.

The latest version expands the previously known list of 5,507 species presented in the Red Book of Endemic Plants of Peru to 8030 accepted taxonomic records. These records span 165 families; the most record-rich families are Orchidaceae, Asteraceae, Piperaceae, Fabaceae, Bromeliaceae, Solanaceae, Melastomataceae, Araceae, Cactaceae, Rubiaceae.

Installation

Install the CRAN release:

install.packages("ppendemic")

Or install the development version from GitHub:

pak::pak("PaulESantos/ppendemic")

Getting Started

library(ppendemic)
#> ── Access Peruvian plant endemic data ─────────────────────── ppendemic 0.2.2 ──

Access the latest dataset directly:

data("ppendemic_tab16")
dplyr::glimpse(ppendemic_tab16)
#> Rows: 8,030
#> Columns: 18
#> $ taxon_name           <chr> "Varronia lippioides", "Varronia munda", "Varroni…
#> $ taxon_status         <chr> "Accepted", "Accepted", "Accepted", "Accepted", "…
#> $ family               <chr> "Boraginaceae", "Boraginaceae", "Boraginaceae", "…
#> $ Genus                <chr> "Varronia", "Varronia", "Varronia", "Adelonema", …
#> $ Species              <chr> "lippioides", "munda", "vargasii", "orientale", "…
#> $ infraspecific_rank   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
#> $ infraspecies         <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
#> $ taxon_authors        <chr> "(I.M.Johnst.) J.S.Mill.", "(I.M.Johnst.) J.S.Mil…
#> $ primary_author       <chr> "J.S.Mill.", "J.S.Mill.", "J.S.Mill.", "Croat", "…
#> $ place_of_publication <chr> "Brittonia", "Brittonia", "Brittonia", "Syst. Bot…
#> $ volume_and_page      <chr> " 65: 342", " 65: 343", " 65: 343", " 41: 39", " …
#> $ first_published      <chr> "(2013)", "(2013)", "(2013)", "(2016)", "(2016)",…
#> $ year_actual          <dbl> 2013, 2013, 2013, 2016, 2016, 1991, 2016, 2015, 2…
#> $ year_nominal         <dbl> 2013, 2013, 2013, 2016, 2016, 1991, 2016, 2015, 2…
#> $ both_years           <chr> "2013", "2013", "2013", "2016", "2016", "1991", "…
#> $ has_different_years  <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, …
#> $ version              <chr> "V-16", "V-16", "V-16", "V-16", "V-16", "V-16", "…
#> $ version_date         <chr> "04-06-2026", "04-06-2026", "04-06-2026", "04-06-…

Count records by family:

ppendemic_tab16 |>
  dplyr::count(family, sort = TRUE)
#> # A tibble: 165 × 2
#>    family              n
#>    <chr>           <int>
#>  1 Orchidaceae      1168
#>  2 Asteraceae        883
#>  3 Piperaceae        680
#>  4 Fabaceae          334
#>  5 Bromeliaceae      319
#>  6 Solanaceae        314
#>  7 Melastomataceae   263
#>  8 Araceae           214
#>  9 Cactaceae         188
#> 10 Rubiaceae         176
#> # ℹ 155 more rows

Check Endemism

Use is_ppendemic() to check whether submitted names are listed as endemic:

splist <- c(
  "Aa aurantiaca",
  "Aa aurantiaaia",
  "Werneria nubigena",
  "Dasyphyllum brasiliense var. barnadesioides",
  "Miconia firma",
  "Festuca densiflora"
)

is_ppendemic(splist)
#> [1] "Endemic"     "Endemic"     "Not endemic" "Endemic"     "Endemic"    
#> [6] "Endemic"

The matching engine uses exact and fuzzy matching. The max_dist argument controls fuzzy tolerance:

is_ppendemic("Aa aurantiaaia", max_dist = 0)
#> [1] "Not endemic"
is_ppendemic("Aa aurantiaaia", max_dist = 2)
#> [1] "Endemic"

Indeterminate names such as sp. and spp. are treated as genus-level records and are not classified as endemic taxa:

is_ppendemic(c("Piper sp.", "Piper spp."))
#> The species list (`splist`) should only include binomial names. The following
#> names were submitted at the genus level: "Piper sp." and "Piper spp."
#> [1] "Not endemic" "Not endemic"

is_ppendemic() can also be used inside tabular workflows:

tibble::tibble(splist = splist) |>
  dplyr::mutate(endemic = is_ppendemic(splist))
#> # A tibble: 6 × 2
#>   splist                                      endemic    
#>   <chr>                                       <chr>      
#> 1 Aa aurantiaca                               Endemic    
#> 2 Aa aurantiaaia                              Endemic    
#> 3 Werneria nubigena                           Not endemic
#> 4 Dasyphyllum brasiliense var. barnadesioides Endemic    
#> 5 Miconia firma                               Endemic    
#> 6 Festuca densiflora                          Endemic

For detailed matching diagnostics, use matching_ppendemic():

matching_ppendemic(splist) |>
  dplyr::select(Orig.Name, Matched.Name, Endemic.Tag, matched)
#>                                     Orig.Name
#> 1                               Aa aurantiaca
#> 2                              Aa aurantiaaia
#> 3                           Werneria nubigena
#> 4 Dasyphyllum brasiliense var. barnadesioides
#> 5                               Miconia firma
#> 6                          Festuca densiflora
#>                                  Matched.Name Endemic.Tag matched
#> 1                               Aa aurantiaca     Endemic    TRUE
#> 2                               Aa aurantiaca     Endemic    TRUE
#> 3                                    Werneria Not endemic   FALSE
#> 4 Dasyphyllum brasiliense var. barnadesioides     Endemic    TRUE
#> 5                               Miconia firma     Endemic    TRUE
#> 6                          Festuca densiflora     Endemic    TRUE

Compare Versions

The package includes a vignette for comparing inclusions, exclusions, and possible nomenclatural replacements across dataset versions:

vignette("cambios-entre-versiones", package = "ppendemic")

Citation

To cite ppendemic, use:

citation("ppendemic")
#> To cite ppendemic in publications use:
#> 
#>   Santos-Andrade PE, Vilca-Bustamante LL (2026). ppendemic: Accepted
#>   Endemic Plant Taxa from Peru. R package version 0.2.2. Current data
#>   release based on WCVP version 16, extracted 04 June 2026.
#>   https://paulesantos.github.io/ppendemic/. doi:10.5281/zenodo.5106619.
#> 
#> A BibTeX entry for LaTeX users is
#> 
#>   @Manual{,
#>     title = {ppendemic: Accepted Endemic Plant Taxa from Peru},
#>     author = {Paul E. {Santos Andrade} and Lucely L. {Vilca Bustamante}},
#>     year = {2026},
#>     note = {R package version 0.2.2. Current data release is based on WCVP version 16, extracted 04 June 2026.},
#>     doi = {10.5281/zenodo.5106619},
#>     url = {https://paulesantos.github.io/ppendemic/},
#>   }