TreeSearch
R package for phylogenetic tree search under inapplicable-corrected parsimony and custom optimality criteria
Science Score: 59.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 32 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
2 of 6 committers (33.3%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.4%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
R package for phylogenetic tree search under inapplicable-corrected parsimony and custom optimality criteria
Basic Info
- Host: GitHub
- Owner: ms609
- License: gpl-3.0
- Language: R
- Default Branch: main
- Homepage: https://ms609.github.io/TreeSearch/
- Size: 123 MB
Statistics
- Stars: 8
- Watchers: 5
- Forks: 4
- Open Issues: 51
- Releases: 26
Topics
Metadata Files
README.md
TreeSearch
"TreeSearch" (Smith 2023) is an R package that contains a "shiny" user interface for interactive tree search and exploration of results, including character visualization, rogue taxon detection (Smith 2022a), tree space mapping (Smith 2022b), and cluster consensus trees.
Inapplicable character states are handled using the algorithm of Brazeau, Guillerme and Smith (2019) using the "Morphy" C library (Brazeau et al. 2017). Implied weighting (Goloboff, 1993), Profile Parsimony (Faith and Trueman, 2001) and Successive Approximations (Farris, 1969) are implemented; custom optimality criteria and search approaches can also be defined.
Installing in R
Full installation instructions, including notes on installing R, are available in a vignette.
Install and load the stable version from CRAN as follows:
```r install.packages("TreeSearch") library("TreeSearch")
Launch the Shiny App with:
TreeSearch::EasyTrees() ```
Install and load the development version of "TreeSearch" with:
r
if(!require("curl")) install.packages("curl")
if(!require("remotes")) install.packages("remotes")
remotes::install_github("ms609/TreeSearch")
library("TreeSearch")
Installing stand-alone application
The TreeSearch user interface can be run as a stand-alone application without installing R. Download the latest release for your platform. If your preferred platform is not supported, please contact the maintainer.
Installation on Windows
You may need to obtain the ffmpeg library before you can run TreeSearch.
This is best installed using 'Chocolatey'.
Once chocolatey is installed, open a PowerShell window with administrative privileges, and
type choco install ffmpeg; then restart your computer.
Quick start
Launch a graphical user interface by typing TreeSearch::EasyTrees() in the R console.
For more control over search settings, see ?MaximizeParsimony().
Documentation
- Package functions reference manual
- Getting started
- Using the GUI
- Analysing tree spaces
- Loading phylogenetic data into R
Calculating concavity profiles for Profile Parsimony
'TreeSearch' uses semantic versioning. Please note that the 'TreeSearch' project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
References
Brazeau M. D., Smith M. R., Guillerme T. (2017). MorphyLib: a library for phylogenetic analysis of categorical trait data with inapplicability. doi: 10.5281/zenodo.815372.
Brazeau, M. D., Guillerme, T. and Smith, M. R. (2019). An algorithm for morphological phylogenetic analysis with inapplicable data. Systematic Biology, 68(4), 619-631. doi: 10.1093/sysbio/syy083.
Faith D. P., Trueman J. W. H. (2001). Towards an inclusive philosophy for phylogenetic inference. Systematic Biology, 50(3), 331–350. doi: 10.1080/10635150118627.
Farris, J. S. (1969). A successive approximations approach to character weighting. Systematic Biology, 18(4), 374–385. doi: 10.2307/2412182.
Goloboff, P. A. (1993). Estimating character weights during tree search. Cladistics, 9(1), 83–91. doi: 10.1111/j.1096-0031.1993.tb00209.x.
Goloboff, P. A., Torres, A., Arias, J. S. (2018). Weighted parsimony outperforms other methods of phylogenetic inference under models appropriate for morphology. Cladistics, 34(4), 407–437. doi: 10.1111/cla.12205.
Smith, M. R. (2022a). Using information theory to detect rogue taxa and improve phylogenetic trees. Systematic Biology, 71(5), 1088–1094. doi: 10.1093/sysbio/syab099
Smith, M. R. (2022b). Robust analysis of phylogenetic tree space. Systematic Biology, 71(5), 1255–1270. doi: 10.1093/sysbio/syab100
Smith, M. R. (2023). TreeSearch: morphological phylogenetic analysis in R. R Journal, 14(4), 305-315. doi: 10.32614/RJ-2023-019
Owner
- Name: Martin R. Smith
- Login: ms609
- Kind: user
- Location: Durham, UK
- Company: Department of Earth Sciences, Durham University
- Website: https://orcid.org/0000-0001-5660-1727
- Twitter: PalaeoSmith
- Repositories: 21
- Profile: https://github.com/ms609
Palaeontology & phylogenetics
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "TreeSearch",
"description": "Reconstruct phylogenetic trees from discrete data. Inapplicable character states are handled using the algorithm of Brazeau, Guillerme and Smith (2019) <doi:10.1093/sysbio/syy083> with the \"Morphy\" library, under equal or implied step weights. Contains a \"shiny\" user interface for interactive tree search and exploration of results, including character visualization, rogue taxon detection, tree space mapping, and cluster consensus trees (Smith 2022a, b) <doi:10.1093/sysbio/syab099>, <doi:10.1093/sysbio/syab100>. Profile Parsimony (Faith and Trueman, 2001) <doi:10.1080/10635150118627>, Successive Approximations (Farris, 1969) <doi:10.2307/2412182> and custom optimality criteria are implemented.",
"name": "TreeSearch: Phylogenetic Analysis with Discrete Character Data",
"relatedLink": "https://ms609.github.io/TreeSearch/",
"codeRepository": "https://github.com/ms609/TreeSearch/",
"issueTracker": "https://github.com/ms609/TreeSearch/issues/",
"license": "https://spdx.org/licenses/GPL-3.0",
"version": "1.7.0",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.5.1 (2025-06-13)",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"author": [
{
"@type": "Person",
"givenName": "Martin R.",
"familyName": "Smith",
"email": "martin.smith@durham.ac.uk",
"@id": "https://orcid.org/0000-0001-5660-1727"
}
],
"copyrightHolder": [
{
"@type": "Person",
"givenName": "Martin R.",
"familyName": "Smith",
"email": "martin.smith@durham.ac.uk",
"@id": "https://orcid.org/0000-0001-5660-1727"
},
{
"@type": "Person",
"givenName": "Martin",
"familyName": "Brazeau",
"@id": "https://orcid.org/0000-0002-0650-1282"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": "Martin R.",
"familyName": "Smith",
"email": "martin.smith@durham.ac.uk",
"@id": "https://orcid.org/0000-0001-5660-1727"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "knitr",
"name": "knitr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knitr"
},
{
"@type": "SoftwareApplication",
"identifier": "phangorn",
"name": "phangorn",
"version": ">= 2.2.1",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=phangorn"
},
{
"@type": "SoftwareApplication",
"identifier": "Quartet",
"name": "Quartet",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=Quartet"
},
{
"@type": "SoftwareApplication",
"identifier": "readxl",
"name": "readxl",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=readxl"
},
{
"@type": "SoftwareApplication",
"identifier": "rmarkdown",
"name": "rmarkdown",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rmarkdown"
},
{
"@type": "SoftwareApplication",
"identifier": "shinytest",
"name": "shinytest",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=shinytest"
},
{
"@type": "SoftwareApplication",
"identifier": "spelling",
"name": "spelling",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=spelling"
},
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
},
{
"@type": "SoftwareApplication",
"identifier": "vdiffr",
"name": "vdiffr",
"version": ">= 1.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=vdiffr"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 4.0"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "ape",
"name": "ape",
"version": ">= 5.6",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=ape"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "cli",
"name": "cli",
"version": ">= 3.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=cli"
},
"4": {
"@type": "SoftwareApplication",
"identifier": "cluster",
"name": "cluster",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=cluster"
},
"5": {
"@type": "SoftwareApplication",
"identifier": "fastmap",
"name": "fastmap",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=fastmap"
},
"6": {
"@type": "SoftwareApplication",
"identifier": "fastmatch",
"name": "fastmatch",
"version": ">= 1.1.3",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=fastmatch"
},
"7": {
"@type": "SoftwareApplication",
"identifier": "fs",
"name": "fs",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=fs"
},
"8": {
"@type": "SoftwareApplication",
"identifier": "future",
"name": "future",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=future"
},
"9": {
"@type": "SoftwareApplication",
"identifier": "PlotTools",
"name": "PlotTools",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=PlotTools"
},
"10": {
"@type": "SoftwareApplication",
"identifier": "promises",
"name": "promises",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=promises"
},
"11": {
"@type": "SoftwareApplication",
"identifier": "protoclust",
"name": "protoclust",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=protoclust"
},
"12": {
"@type": "SoftwareApplication",
"identifier": "Rcpp",
"name": "Rcpp",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=Rcpp"
},
"13": {
"@type": "SoftwareApplication",
"identifier": "Rdpack",
"name": "Rdpack",
"version": ">= 0.7",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=Rdpack"
},
"14": {
"@type": "SoftwareApplication",
"identifier": "Rogue",
"name": "Rogue",
"version": "> 2.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=Rogue"
},
"15": {
"@type": "SoftwareApplication",
"identifier": "shiny",
"name": "shiny",
"version": ">= 1.6.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=shiny"
},
"16": {
"@type": "SoftwareApplication",
"identifier": "shinyjs",
"name": "shinyjs",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=shinyjs"
},
"17": {
"@type": "SoftwareApplication",
"identifier": "stats",
"name": "stats"
},
"18": {
"@type": "SoftwareApplication",
"identifier": "stringi",
"name": "stringi",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=stringi"
},
"19": {
"@type": "SoftwareApplication",
"identifier": "TreeDist",
"name": "TreeDist",
"version": ">= 2.6.3",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=TreeDist"
},
"20": {
"@type": "SoftwareApplication",
"identifier": "TreeTools",
"name": "TreeTools",
"version": ">= 1.16",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=TreeTools"
},
"SystemRequirements": "C++17"
},
"fileSize": "4584.9KB",
"citation": [
{
"@type": "SoftwareSourceCode",
"datePublished": "2017",
"author": [
{
"@type": "Person",
"givenName": [
"Martin",
"D."
],
"familyName": "Brazeau"
},
{
"@type": "Person",
"givenName": [
"Martin",
"R."
],
"familyName": "Smith",
"email": "martin.smith@durham.ac.uk"
},
{
"@type": "Person",
"givenName": "Thomas",
"familyName": "Guillerme"
}
],
"name": "MorphyLib: a library for phylogenetic analysis of categorical trait data with inapplicability",
"description": "Version 0.0.1-alpha"
},
{
"@type": "ScholarlyArticle",
"datePublished": "2019",
"author": [
{
"@type": "Person",
"givenName": [
"Martin",
"D."
],
"familyName": "Brazeau"
},
{
"@type": "Person",
"givenName": "Thomas",
"familyName": "Guillerme"
},
{
"@type": "Person",
"givenName": [
"Martin",
"R."
],
"familyName": "Smith",
"email": "martin.smith@durham.ac.uk"
}
],
"name": "An algorithm for morphological phylogenetic analysis with inapplicable data",
"pagination": "619-631",
"isPartOf": {
"@type": "PublicationIssue",
"datePublished": "2019",
"isPartOf": {
"@type": [
"PublicationVolume",
"Periodical"
],
"volumeNumber": "64",
"name": "Systematic Biology"
}
}
},
{
"@type": "SoftwareSourceCode",
"datePublished": "2018",
"author": [
{
"@type": "Person",
"givenName": [
"Martin",
"R."
],
"familyName": "Smith",
"email": "martin.smith@durham.ac.uk"
}
],
"name": "{TreeSearch}: phylogenetic analysis with discrete character data",
"identifier": "10.5281/zenodo.1042590",
"description": "R package version 1.7.0",
"@id": "https://doi.org/10.5281/zenodo.1042590",
"sameAs": "https://doi.org/10.5281/zenodo.1042590"
},
{
"@type": "ScholarlyArticle",
"datePublished": "2023",
"author": [
{
"@type": "Person",
"givenName": [
"Martin",
"R."
],
"familyName": "Smith",
"email": "martin.smith@durham.ac.uk"
}
],
"name": "{TreeSearch}: morphological phylogenetic analysis in {{R}}",
"identifier": "10.32614/RJ-2023-019",
"pagination": "305-315",
"@id": "https://doi.org/10.32614/RJ-2023-019",
"sameAs": "https://doi.org/10.32614/RJ-2023-019",
"isPartOf": {
"@type": "PublicationIssue",
"issueNumber": "4",
"datePublished": "2023",
"isPartOf": {
"@type": [
"PublicationVolume",
"Periodical"
],
"volumeNumber": "14",
"name": "R Journal"
}
}
}
]
}
GitHub Events
Total
- Create event: 9
- Release event: 1
- Issues event: 25
- Watch event: 3
- Delete event: 5
- Issue comment event: 35
- Push event: 209
- Pull request event: 16
- Fork event: 1
Last Year
- Create event: 9
- Release event: 1
- Issues event: 25
- Watch event: 3
- Delete event: 5
- Issue comment event: 35
- Push event: 209
- Pull request event: 16
- Fork event: 1
Committers
Last synced: over 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Martin Smith | m****s@g****m | 1,349 |
| Martin R. Smith | 1****9 | 294 |
| Martin R. Smith | p****8@d****k | 89 |
| GitHub Actions | a****s@g****m | 32 |
| Martin R. Smith | m****h@d****k | 31 |
| Fabrizio Sandri | 1****i | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 83
- Total pull requests: 65
- Average time to close issues: 12 months
- Average time to close pull requests: 25 days
- Total issue authors: 8
- Total pull request authors: 3
- Average comments per issue: 0.22
- Average comments per pull request: 0.54
- Merged pull requests: 54
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 19
- Pull requests: 13
- Average time to close issues: 2 months
- Average time to close pull requests: about 10 hours
- Issue authors: 4
- Pull request authors: 1
- Average comments per issue: 0.26
- Average comments per pull request: 0.15
- Merged pull requests: 9
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- ms609 (74)
- HS6986 (2)
- ad0012 (2)
- teng-gao (1)
- RussellGarwood (1)
- helenedbqt (1)
- computingmachine (1)
- KlausVigo (1)
- EunokLee (1)
Pull Request Authors
- ms609 (66)
- FabrizioSandri (1)
- KlausVigo (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- cran 744 last-month
- Total dependent packages: 3
- Total dependent repositories: 4
- Total versions: 28
- Total maintainers: 1
cran.r-project.org: TreeSearch
Phylogenetic Analysis with Discrete Character Data
- Homepage: https://ms609.github.io/TreeSearch/ (doc)
- Documentation: http://cran.r-project.org/web/packages/TreeSearch/TreeSearch.pdf
- License: GPL (≥ 3)
-
Latest release: 1.7.0
published 6 months ago
Rankings
Maintainers (1)
Dependencies
- R >= 3.5.0 depends
- Rcpp * imports
- Rdpack >= 0.7 imports
- Rogue > 2.0.0 imports
- TreeDist >= 2.3.0 imports
- TreeTools >= 1.7.0 imports
- ape >= 5.6 imports
- cli >= 3.0 imports
- cluster * imports
- fastmatch >= 1.1.3 imports
- future * imports
- promises * imports
- protoclust * imports
- shiny >= 1.6.0 imports
- shinyjs * imports
- stats * imports
- Quartet * suggests
- knitr * suggests
- phangorn >= 2.2.1 suggests
- rmarkdown * suggests
- shinytest * suggests
- spelling * suggests
- testthat * suggests
- vdiffr >= 1.0.0 suggests
- actions/checkout v2 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
- FabrizioSandri/RcppDeepState-action main composite
- actions/checkout v2 composite
- actions/cache v2 composite
- actions/checkout v2 composite
- r-lib/actions/setup-r v2 composite
- actions/checkout v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
- actions/cache v2 composite
- actions/checkout v2 composite
- r-lib/actions/setup-pandoc master composite
- r-lib/actions/setup-r v2 composite
- actions/cache v2 composite
- actions/checkout v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- actions/cache v2 composite
- actions/checkout v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- actions/cache v2 composite
- actions/checkout v2 composite
- actions/upload-artifact main composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite