Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rossellhayes/plu
Dynamically pluralize phrases in R ☂☂☂
https://github.com/rossellhayes/plu
natural-language plural r rstats
Last synced: 2 months ago
JSON representation
Dynamically pluralize phrases in R ☂☂☂
- Host: GitHub
- URL: https://github.com/rossellhayes/plu
- Owner: rossellhayes
- License: other
- Created: 2020-05-05T02:22:53.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-09-24T04:03:14.000Z (over 1 year ago)
- Last Synced: 2024-10-12T12:16:27.763Z (3 months ago)
- Topics: natural-language, plural, r, rstats
- Language: R
- Homepage: https://pkg.rossellhayes.com/plu/
- Size: 6.23 MB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
---
output: github_document
---```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)# remotes::install_github("GuangchuangYu/badger")
library(badger)
```# plu
`r badge_cran_release(color = "brightgreen")`
`r badge_lifecycle("stable")`
`r badge_license(color = "blueviolet")`
`r badge_github_actions()`
[![](https://codecov.io/gh/rossellhayes/plu/branch/main/graph/badge.svg)](https://app.codecov.io/gh/rossellhayes/plu)
`r badge_dependencies()`
`r badge_codefactor()`Pluralize phrases in R
## Overview
**plu** provides a simplified way to dynamically generate plain-language
messages in R when we can't know beforehand whether a message will be singular
or plural.Pluralizes English phrases based on the length of an associated vector.
Contains helper functions to create natural language lists from vectors and to
include the length of a vector in natural language.## Installation
You can install the stable release of **plu** from [CRAN](https://cran.r-project.org/package=plu) with:
```{r eval = FALSE}
install.packages("plu")
```You can install the development version of **plu** from [GitHub](https://github.com/rossellhayes/plu) with:
```{r eval = FALSE}
# install.packages("remotes")
remotes::install_github("rossellhayes/plu")
```## Usage
**plu** can be particularly useful when constructing error messages.
For example, you may want to create a message that is gramatically correct regardless of whether the user's code had one problem or multiple problems.```{r setup, include = FALSE}
x <- 1:9
```With one problem, **plu** constructs a message in the singular:
```{r}
arguments <- c(1, 2, 3, 3.5)paste(
"All arguments must be integers.",
plu::ral("Argument", arguments[arguments %% 1 != 0]),
and::and(encodeString(arguments[arguments %% 1 != 0], quote = "`")),
plu::ral("isn't an integer.", arguments[arguments %% 1 != 0])
)
```But with two problems, the same code will construct a message in the plural:
```{r}
arguments <- c(1, 2, 3, 3.5, 3.75)paste(
"All arguments must be integers.",
plu::ral("Argument", arguments[arguments %% 1 != 0]),
and::and(encodeString(arguments[arguments %% 1 != 0], quote = "`")),
plu::ral("isn't an integer.", arguments[arguments %% 1 != 0])
)
```If you expect a lot of problems, you can use `plu::more()` to limit the number of displayed issues:
```{r}
ints <- as.integer(runif(20, -10, 10))
paste(
"All inputs must be non-negative.",
and::and(plu::more(encodeString(ints[ints < 0], quote = "`"), type = "integer")),
plu::ral("is", ints[ints < 0]), "negative."
)
```## Credits
Hex sticker font is [Bodoni*](https://github.com/indestructible-type/Bodoni)
by [indestructible type*](https://indestructibletype.com/Home.html).Image adapted from icon made by [Freepik](https://www.freepik.com) from
[flaticon.com](https://www.flaticon.com/free-icon/umbrella_2357382).---
Please note that the **plu** project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.