| Title: | Taxonomic Distance and Phylogenetic Lineage Computation |
|---|---|
| Description: | Computes phylogenetic distances between any two taxa using hierarchical lineage data retrieved from The Taxonomicon <http://taxonomicon.taxonomy.nl>, a comprehensive curated classification of all life based on Systema Naturae 2000 (Brands, 1989 <http://taxonomicon.taxonomy.nl>). Given any two taxon names, retrieves their full lineages, identifies the most recent common ancestor (MRCA), and computes a dissimilarity index based on lineage depth. Outputs native dist objects, enabling direct integration with the R statistical ecosystem for hierarchical clustering, principal coordinate analysis (PCoA), and multivariate ecological analyses. Supports individual distance queries, pairwise distance matrices, clade filtering, and lineage utilities. |
| Authors: | Rodrigo Fonseca Villa [aut, cre] (ORCID: <https://orcid.org/0009-0005-2938-2270>) |
| Maintainer: | Rodrigo Fonseca Villa <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.5.0 |
| Built: | 2026-06-09 22:09:40 UTC |
| Source: | https://github.com/rodrigosqrt3/taxodist |
taxodist computes phylogenetic distances between any two taxa using hierarchical lineage data retrieved from The Taxonomicon (taxonomy.nl), a comprehensive curated classification of all life based on Systema Naturae 2000.
get_lineage() — retrieve the full lineage of any taxon
taxo_distance() — compute the tree metric distance between two taxa
mrca() — find the most recent common ancestor
distance_matrix() — compute all pairwise distances for a set of taxa
closest_relative() — find the closest relative among candidates
compare_lineages() — print a side-by-side lineage comparison
shared_clades() — list clades shared between two taxa
is_member() — test clade membership
filter_clade() — filter taxa by clade membership
check_coverage() — check Taxonomicon coverage for a list of taxa
lineage_depth() — get the lineage depth of a taxon
clear_cache() — clear the session lineage cache
The distance metric is based on the depth of the most recent common ancestor (MRCA):
The deeper the shared ancestor, the smaller the distance. This metric ensures that taxa sharing the same MRCA are always equidistant from any third taxon, regardless of lineage depth below the split — a key biological correctness property absent from Jaccard-based approaches.
All lineage data is sourced from The Taxonomicon (taxonomy.nl), based on Systema Naturae 2000 by S.J. Brands (1989 onwards). Please cite this resource when using taxodist in published work.
Maintainer: Rodrigo Fonseca Villa [email protected] (ORCID)
Brands, S.J. (1989 onwards). Systema Naturae 2000. Amsterdam, The Netherlands. Retrieved from The Taxonomicon, http://taxonomicon.taxonomy.nl.
Useful links:
Report bugs at https://github.com/rodrigosqrt3/taxodist/issues
Reports the number of cached entries, their total memory footprint, and the names of all taxa whose lineages are stored in the current session. Useful for understanding what has already been retrieved before running further computations.
cache_info()cache_info()
Invisibly returns a list with elements:
n_lineagesInteger. Number of cached lineages.
n_idsInteger. Number of cached taxon IDs.
taxaCharacter vector of taxa with cached lineages.
size_bytesNumeric. Total memory used by the cache.
save_cache(), load_cache(), clear_cache()
get_lineage("Tyrannosaurus") get_lineage("Velociraptor") cache_info()get_lineage("Tyrannosaurus") get_lineage("Velociraptor") cache_info()
Queries The Taxonomicon for a taxon name and returns a logical indicating whether the taxon was found. Useful for pre-screening a list of names before running distance computations.
check_coverage(taxa, verbose = FALSE)check_coverage(taxa, verbose = FALSE)
taxa |
A character vector of one or more taxon names. |
verbose |
Logical. If |
A named logical vector. TRUE indicates the taxon was found,
FALSE indicates it was not.
check_coverage(c("Tyrannosaurus", "Velociraptor", "Fakeosaurus"))check_coverage(c("Tyrannosaurus", "Velociraptor", "Fakeosaurus"))
Clears all cached lineages stored in the current R session. Useful when you suspect cached data is stale or want to force fresh retrieval.
clear_cache()clear_cache()
Invisibly returns NULL.
clear_cache()clear_cache()
Given a query taxon and a vector of candidate taxa, returns the candidate with the smallest phylogenetic distance to the query.
closest_relative(taxon, candidates, verbose = FALSE)closest_relative(taxon, candidates, verbose = FALSE)
taxon |
A character string giving the query taxon name. |
candidates |
A character vector of candidate taxon names to compare against. |
verbose |
Logical. If |
A data frame with columns taxon (candidate name) and distance
(tree metric distance), sorted by distance ascending. Returns NULL if
the query taxon cannot be found.
closest_relative("Tyrannosaurus", c("Velociraptor", "Triceratops", "Brachiosaurus", "Allosaurus"))closest_relative("Tyrannosaurus", c("Velociraptor", "Triceratops", "Brachiosaurus", "Allosaurus"))
Prints the lineages of two taxa aligned at their most recent common ancestor, making the point of divergence easy to identify.
compare_lineages(taxon_a, taxon_b, verbose = FALSE)compare_lineages(taxon_a, taxon_b, verbose = FALSE)
taxon_a |
A character string giving the first taxon name. |
taxon_b |
A character string giving the second taxon name. |
verbose |
Logical. If |
Invisibly returns a list with elements lineage_a, lineage_b,
and mrca_depth.
compare_lineages("Tyrannosaurus", "Velociraptor") compare_lineages("Tyrannosaurus", "Triceratops")compare_lineages("Tyrannosaurus", "Velociraptor") compare_lineages("Tyrannosaurus", "Triceratops")
Given a vector of taxon names, computes all pairwise phylogenetic distances and returns a symmetric distance matrix. Lineages are cached after first retrieval to minimise redundant network requests.
distance_matrix(taxa, verbose = FALSE, progress = TRUE)distance_matrix(taxa, verbose = FALSE, progress = TRUE)
taxa |
A character vector of taxon names. |
verbose |
Logical. If |
progress |
Logical. If |
A symmetric numeric matrix of class "dist" containing pairwise
distances. Row and column names are set to the input taxon names.
Taxa that could not be found are included with NA distances.
taxo_distance(), closest_relative()
theropods <- c("Tyrannosaurus", "Velociraptor", "Spinosaurus", "Allosaurus", "Carnotaurus") mat <- distance_matrix(theropods) print(mat)theropods <- c("Tyrannosaurus", "Velociraptor", "Spinosaurus", "Allosaurus", "Carnotaurus") mat <- distance_matrix(theropods) print(mat)
Given a vector of taxon names and a clade name, returns only those taxa whose lineage includes the specified clade.
filter_clade(taxa, clade, verbose = FALSE)filter_clade(taxa, clade, verbose = FALSE)
taxa |
A character vector of taxon names. |
clade |
A character string giving the clade to filter by. |
verbose |
Logical. If |
A character vector of taxa that are members of the specified clade.
taxa <- c("Tyrannosaurus", "Triceratops", "Velociraptor", "Brachiosaurus", "Homo") filter_clade(taxa, "Theropoda") filter_clade(taxa, "Dinosauria")taxa <- c("Tyrannosaurus", "Triceratops", "Velociraptor", "Brachiosaurus", "Homo") filter_clade(taxa, "Theropoda") filter_clade(taxa, "Dinosauria")
Given a focal taxon and a vector of community taxa, retrieves all lineages and computes the taxonomic distance from the focal taxon to each member of the community. Returns a sorted data frame that also reports the most recent common ancestor (MRCA) for each pair, making it easy to interpret why a taxon is close or distant.
focal_distances(focal, community, verbose = FALSE, progress = TRUE)focal_distances(focal, community, verbose = FALSE, progress = TRUE)
focal |
A character string giving the focal taxon name. |
community |
A character vector of community taxon names to compare
against. The focal taxon may be included — it will receive a distance
of |
verbose |
Logical. If |
progress |
Logical. If |
A data frame of class "taxodist_focal" with columns:
taxonCharacter. Community taxon name.
distanceNumeric. Taxonomic distance to the focal taxon.
mrcaCharacter. Name of the most recent common ancestor.
mrca_depthInteger. Depth of the MRCA node.
Rows are sorted by distance ascending (closest relatives first).
Returns NULL if the focal taxon cannot be found.
closest_relative(), distance_matrix(), taxo_distance()
community <- c("Velociraptor", "Triceratops", "Brachiosaurus", "Allosaurus", "Homo", "Quercus") focal_distances("Tyrannosaurus", community)community <- c("Velociraptor", "Triceratops", "Brachiosaurus", "Allosaurus", "Homo", "Quercus") focal_distances("Tyrannosaurus", community)
A convenience wrapper that combines get_taxonomicon_id() and
get_lineage_by_id() into a single call. Given a taxon name, returns
its complete lineage from root to tip.
get_lineage(taxon, clean = TRUE, verbose = FALSE)get_lineage(taxon, clean = TRUE, verbose = FALSE)
taxon |
A character string giving the taxon name. |
clean |
Logical. If |
verbose |
Logical. If |
A character vector of clade names ordered from root to tip, or
NULL if the taxon cannot be found.
get_lineage("Tyrannosaurus") get_lineage("Homo sapiens") get_lineage("Quercus robur")get_lineage("Tyrannosaurus") get_lineage("Homo sapiens") get_lineage("Quercus robur")
Given a Taxonomicon numeric ID, retrieves and parses the complete hierarchical lineage from root (Natura) to the taxon itself. The lineage is returned as a character vector ordered from root to tip.
get_lineage_by_id(taxon_id, clean = TRUE, verbose = FALSE)get_lineage_by_id(taxon_id, clean = TRUE, verbose = FALSE)
taxon_id |
A numeric or character string giving the Taxonomicon ID.
Obtain this with |
clean |
Logical. If |
verbose |
Logical. If |
Lineage data is sourced from The Taxonomicon, which is based on Systema Naturae 2000 (Brands, S.J., 1989 onwards). The depth of lineages in The Taxonomicon substantially exceeds that of other programmatic sources such as the Open Tree of Life, particularly for well-studied clades such as Dinosauria, where intermediate clades at the level of superfamilies, tribes, and named subclades are fully resolved.
A character vector of clade names from root to tip, or NULL if
retrieval fails.
get_lineage(), taxo_distance()
id <- get_taxonomicon_id("Tyrannosaurus") lin <- get_lineage_by_id(id) print(lin)id <- get_taxonomicon_id("Tyrannosaurus") lin <- get_lineage_by_id(id) print(lin)
Queries The Taxonomicon (taxonomy.nl) to retrieve the internal numeric identifier for a given taxon name. The search filters out non-biological entities such as astronomical objects that may share the same name.
get_taxonomicon_id(taxon, verbose = FALSE)get_taxonomicon_id(taxon, verbose = FALSE)
taxon |
A character string giving the taxon name to search for.
Typically a genus name (e.g., |
verbose |
Logical. If |
The function queries the static search endpoint at
taxonomicon.taxonomy.nl/TaxonList.aspx and parses the resulting HTML
to extract the taxon ID from the hierarchy link. When multiple matches
exist (e.g., a genus name shared with an astronomical object), biological
entries are prioritised by filtering for entries annotated as dinosaur,
reptile, archosaur, animal, plant, fungus, or bacterium.
A character string containing the Taxonomicon numeric ID, or NULL
if the taxon is not found.
get_lineage(), taxo_distance()
get_taxonomicon_id("Tyrannosaurus") # returns "50841" get_taxonomicon_id("Homo") get_taxonomicon_id("Quercus")get_taxonomicon_id("Tyrannosaurus") # returns "50841" get_taxonomicon_id("Homo") get_taxonomicon_id("Quercus")
Returns TRUE if taxon is a member of clade — i.e., if the clade name
appears in the taxon's lineage.
is_member(taxon, clade, verbose = FALSE)is_member(taxon, clade, verbose = FALSE)
taxon |
A character string giving the taxon name to test. |
clade |
A character string giving the clade name to test membership in. |
verbose |
Logical. If |
A logical value, or NULL if the taxon cannot be found.
is_member("Tyrannosaurus", "Theropoda") # TRUE is_member("Triceratops", "Theropoda") # FALSE is_member("Homo", "Amniota") # TRUEis_member("Tyrannosaurus", "Theropoda") # TRUE is_member("Triceratops", "Theropoda") # FALSE is_member("Homo", "Amniota") # TRUE
Returns the number of nodes in the lineage of a taxon, from root to tip. This reflects how deeply nested the taxon is within the taxonomic hierarchy.
lineage_depth(taxon, verbose = FALSE)lineage_depth(taxon, verbose = FALSE)
taxon |
A character string giving the taxon name. |
verbose |
Logical. If |
An integer giving the lineage depth, or NULL if the taxon cannot
be found.
lineage_depth("Tyrannosaurus") # deep — many intermediate clades lineage_depth("Biota") # shallow — near rootlineage_depth("Tyrannosaurus") # deep — many intermediate clades lineage_depth("Biota") # shallow — near root
Restores lineage data saved with save_cache() into the current session
cache, avoiding network requests for taxa already retrieved in a previous
session.
load_cache(file)load_cache(file)
file |
Path to an |
Invisibly returns NULL.
tmp <- tempfile(fileext = ".rds") save_cache(tmp) load_cache(tmp) unlink(tmp)tmp <- tempfile(fileext = ".rds") save_cache(tmp) load_cache(tmp) unlink(tmp)
Retrieves the lineages of two taxa and returns the name of their most recent common ancestor (MRCA) — the deepest node shared by both lineages.
mrca(taxon_a, taxon_b, verbose = FALSE)mrca(taxon_a, taxon_b, verbose = FALSE)
taxon_a |
A character string giving the first taxon name. |
taxon_b |
A character string giving the second taxon name. |
verbose |
Logical. If |
A character string giving the name of the MRCA, or NULL if
either taxon cannot be found or no common ancestor exists.
mrca("Tyrannosaurus", "Velociraptor") # "Tyrannoraptora" mrca("Tyrannosaurus", "Triceratops") # "Dinosauria" mrca("Tyrannosaurus", "Homo") # "Amniota"mrca("Tyrannosaurus", "Velociraptor") # "Tyrannoraptora" mrca("Tyrannosaurus", "Triceratops") # "Dinosauria" mrca("Tyrannosaurus", "Homo") # "Amniota"
Plots the hierarchical clustering dendrogram produced by taxo_cluster().
## S3 method for class 'taxodist_cluster' plot( x, main = "Taxonomic Clustering", xlab = "", sub = paste("Method:", if (!is.null(x$hclust)) x$hclust$method else "None"), ... )## S3 method for class 'taxodist_cluster' plot( x, main = "Taxonomic Clustering", xlab = "", sub = paste("Method:", if (!is.null(x$hclust)) x$hclust$method else "None"), ... )
x |
A |
main |
Plot title. Default: |
xlab |
X-axis label. Default: |
sub |
Subtitle. Default: clustering method used. |
... |
Additional arguments passed to |
Invisibly returns x. Called for side effects (plotting).
taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") cl <- taxo_cluster(taxa) plot(cl)taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") cl <- taxo_cluster(taxa) plot(cl)
Plots the PCoA ordination produced by taxo_ordinate().
## S3 method for class 'taxodist_ord' plot( x, main = "Taxonomic Ordination (PCoA)", xlab = "PC1", ylab = "PC2", labels = if (!is.null(x$points)) rownames(x$points) else NULL, ... )## S3 method for class 'taxodist_ord' plot( x, main = "Taxonomic Ordination (PCoA)", xlab = "PC1", ylab = "PC2", labels = if (!is.null(x$points)) rownames(x$points) else NULL, ... )
x |
A |
main |
Plot title. Default: |
xlab |
X-axis label. Default: |
ylab |
Y-axis label. Default: |
labels |
Character vector of labels. Default: rownames of points. |
... |
Additional arguments passed to |
Invisibly returns x. Called for side effects (plotting).
taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") ord <- taxo_ordinate(taxa) plot(ord)taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") ord <- taxo_ordinate(taxa) plot(ord)
Print method for taxodist_focal objects
## S3 method for class 'taxodist_focal' print(x, ...)## S3 method for class 'taxodist_focal' print(x, ...)
x |
A |
... |
Additional arguments (ignored). |
Invisibly returns x. Called for side effects (printing).
Print method for taxodist_path objects
## S3 method for class 'taxodist_path' print(x, ...)## S3 method for class 'taxodist_path' print(x, ...)
x |
A |
... |
Additional arguments (ignored). |
Invisibly returns x. Called for side effects (printing).
Print method for taxodist distance results
## S3 method for class 'taxodist_result' print(x, ...)## S3 method for class 'taxodist_result' print(x, ...)
x |
A list returned by |
... |
Additional arguments (ignored). |
Invisibly returns x. Called for side effects (printing).
Serialises the current session cache to an .rds file so it can be
restored in a future session with load_cache(). Useful for
reproducibility and for avoiding repeated network requests.
save_cache(file)save_cache(file)
file |
Path to the |
Invisibly returns NULL.
tmp <- tempfile(fileext = ".rds") save_cache(tmp) unlink(tmp)tmp <- tempfile(fileext = ".rds") save_cache(tmp) unlink(tmp)
Prints a summary of the PCoA ordination, including the goodness-of-fit and the proportion of variance explained by each principal coordinate.
## S3 method for class 'taxodist_ord' summary(object, ...)## S3 method for class 'taxodist_ord' summary(object, ...)
object |
A |
... |
Additional arguments (ignored). |
Invisibly returns a data frame containing the eigenvalues and variance explained by each dimension.
Computes pairwise taxonomic distances and performs hierarchical clustering.
taxo_cluster(taxa, method = "average", ...)taxo_cluster(taxa, method = "average", ...)
taxa |
A character vector of taxon names, or a |
method |
Clustering method passed to |
... |
Additional arguments passed to |
An object of class "taxodist_cluster" — a list with:
hclustThe stats::hclust() result.
distThe underlying distance matrix.
taxo_ordinate(), distance_matrix()
taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") cl <- taxo_cluster(taxa) if (!is.null(cl$hclust)) { plot(cl) }taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") cl <- taxo_cluster(taxa) if (!is.null(cl$hclust)) { plot(cl) }
Given two taxon names, retrieves their lineages from The Taxonomicon and computes a taxonomic distance based on the depth of their most recent common ancestor (MRCA):
taxo_distance(taxon_a, taxon_b, verbose = FALSE)taxo_distance(taxon_a, taxon_b, verbose = FALSE)
taxon_a |
A character string giving the first taxon name. |
taxon_b |
A character string giving the second taxon name. |
verbose |
Logical. If |
The deeper the shared ancestor, the smaller (closer to zero) the distance. This metric ensures that taxa diverging at the same node are always equidistant from any third taxon, regardless of lineage depth differences below the split.
A named list of class "taxodist_result" with the following elements:
distanceNumeric. The distance between the two taxa. Returns 0 if one taxon is an ancestor of the other.
mrcaCharacter. The name of the most recent common ancestor.
mrca_depthInteger. The depth of the MRCA node.
depth_aInteger. The lineage depth of taxon A.
depth_bInteger. The lineage depth of taxon B.
taxon_aCharacter. Name of the first taxon.
taxon_bCharacter. Name of the second taxon.
Returns NULL if either taxon cannot be found.
Brands, S.J. (1989 onwards). Systema Naturae 2000. Amsterdam, The Netherlands. Retrieved from The Taxonomicon, http://taxonomicon.taxonomy.nl.
mrca(), distance_matrix(), get_lineage()
# Distance between two theropods taxo_distance("Tyrannosaurus", "Velociraptor") # Distance between very distantly related taxa taxo_distance("Tyrannosaurus", "Quercus") # Distance between two oviraptorid genera taxo_distance("Nomingia", "Huanansaurus")# Distance between two theropods taxo_distance("Tyrannosaurus", "Velociraptor") # Distance between very distantly related taxa taxo_distance("Tyrannosaurus", "Quercus") # Distance between two oviraptorid genera taxo_distance("Nomingia", "Huanansaurus")
Computes pairwise taxonomic distances and plots a heatmap with hierarchical clustering dendrograms on the margins. Darker/hotter colors typically represent smaller distances (closer relatives).
taxo_heatmap(taxa, ...)taxo_heatmap(taxa, ...)
taxa |
A character vector of taxon names, or a |
... |
Additional arguments passed to |
Invisibly returns the underlying dist object.
Called primarily for its side effect (plotting).
taxa <- c("Tyrannosaurus", "Velociraptor", "Homo", "Panthera", "Quercus") taxo_heatmap(taxa)taxa <- c("Tyrannosaurus", "Velociraptor", "Homo", "Panthera", "Quercus") taxo_heatmap(taxa)
Computes pairwise taxonomic distances and applies classical multidimensional scaling (PCoA) to project taxa into a low-dimensional space.
taxo_ordinate(taxa, k = 2, ...)taxo_ordinate(taxa, k = 2, ...)
taxa |
A character vector of taxon names, or a |
k |
Number of dimensions. Default |
... |
Additional arguments passed to |
An object of class "taxodist_ord" — a list with:
pointsA matrix of coordinates (taxa x k dimensions).
distThe underlying distance matrix.
GOFGoodness-of-fit fromstats::cmdscale().
eigThe eigenvalues computed during PCoA.
taxo_cluster(), distance_matrix()
taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") ord <- taxo_ordinate(taxa) if (!is.null(ord$points)) { plot(ord$points, type = "n") text(ord$points, labels = rownames(ord$points)) }taxa <- c("Tyrannosaurus", "Velociraptor", "Triceratops", "Brachiosaurus") ord <- taxo_ordinate(taxa) if (!is.null(ord$points)) { plot(ord$points, type = "n") text(ord$points, labels = rownames(ord$points)) }
Returns the full node-by-node path from one taxon up to their most recent common ancestor (MRCA) and back down to the other taxon. The result is a data frame with one row per node, making it easy to inspect, filter, or pipe into other functions.
taxo_path(taxon_a, taxon_b, verbose = FALSE)taxo_path(taxon_a, taxon_b, verbose = FALSE)
taxon_a |
A character string giving the first taxon name. |
taxon_b |
A character string giving the second taxon name. |
verbose |
Logical. If |
A data frame of class "taxodist_path" with columns:
nodeCharacter. The clade or taxon name at this step.
depthInteger. The depth of this node in the full lineage of its side (or the shared lineage for the MRCA).
directionCharacter. One of "a" (ascending from taxon A to
MRCA), "mrca" (the shared ancestor), or "b" (descending from MRCA
to taxon B).
Returns NULL if either taxon cannot be found.
mrca(), shared_clades(), compare_lineages()
taxo_path("Tyrannosaurus", "Velociraptor") taxo_path("Tyrannosaurus", "Homo")taxo_path("Tyrannosaurus", "Velociraptor") taxo_path("Tyrannosaurus", "Homo")
Queries The Taxonomicon database and returns a data frame of all available biological entries matching the search string. This is particularly useful for exploring homonyms, historical ranks, or taxonomic synonyms before computing distances.
taxo_search(taxon, verbose = FALSE)taxo_search(taxon, verbose = FALSE)
taxon |
A character string giving the taxon name to search for. |
verbose |
Logical. If |
A data frame of class "data.frame" with columns:
idCharacter. The numeric Taxonomicon ID.
nameCharacter. The full taxon description, including rank and author.
Returns NULL if no matches are found.
get_lineage(), taxo_distance()
taxo_search("Bacteria") taxo_search("Nereis") taxo_search("Tyrannosaurus")taxo_search("Bacteria") taxo_search("Nereis") taxo_search("Tyrannosaurus")
A pre-computed dataset containing 50 taxonomic clades spanning across the tree of life, fetched from The Taxonomicon. This provides a offline fallback containing lineages, distance matrices, and search queries for demonstrating the package.
data(taxobase)data(taxobase)
A structured list containing the following pre-computed components:
Character vector of 1,000 candidate taxonomic genera.
Character vector of verified clades found in The Taxonomicon.
Named logical vector indicating database presence of each taxon.
A pre-computed taxonomic 'dist' object for verified clades.
A pre-computed distance list between Tyrannosaurus and Homo.
Full taxonomy tree structure list for 'Homo'.
Full taxonomy tree structure list for 'Tyrannosaurus'.
Dataframe demonstrating the closest relative query.
Character vector filtering verified taxa down to Theropoda.
Reference search result dataset for the term 'Bacteria'.
http://taxonomicon.taxonomy.nl
data(taxobase) length(taxobase$found_taxa) head(labels(taxobase$matrix))data(taxobase) length(taxobase$found_taxa) head(labels(taxobase$matrix))