Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rstudio/forge
forge: Casting values into shape
https://github.com/rstudio/forge
r
Last synced: 2 months ago
JSON representation
forge: Casting values into shape
- Host: GitHub
- URL: https://github.com/rstudio/forge
- Owner: rstudio
- License: other
- Created: 2018-07-18T06:55:29.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-10-29T12:41:00.000Z (about 4 years ago)
- Last Synced: 2024-07-31T19:27:43.644Z (6 months ago)
- Topics: r
- Language: R
- Homepage:
- Size: 56.6 KB
- Stars: 18
- Watchers: 6
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.Rmd
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
- jimsghstars - rstudio/forge - forge: Casting values into shape (R)
README
---
output: github_document
---
[![Travis build status](https://travis-ci.org/rstudio/forge.svg?branch=master)](https://travis-ci.org/rstudio/forge)[![Coverage status](https://codecov.io/gh/rstudio/forge/branch/master/graph/badge.svg)](https://codecov.io/github/rstudio/forge?branch=master)[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/kevinykuo/forge?branch=master&svg=true)](https://ci.appveyor.com/project/kevinykuo/forge)```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
library(forge)
```# forge
**forge** provides functions for input checking and casting. It is intended to be used by package developers, especially for interoperating with other runtimes, such as Python and JVM languages. It contains two families of functions, `cast_*` and `certify()`. The former casts a value to a specific type, while the latter ensures certain conditions are met.
## Installation
You can install **forge** from CRAN with
``` r
install.packages("forge")
```You can install the development version from GitHub with
``` r
devtools::install_github("rstudio/forge")
```## Examples
Here we demonstrate **forge** with a trivial function:
```{r, error = TRUE}
#' @import forge
fib <- function(n) {
n <- cast_scalar_integer(n, return_id = TRUE) %>%
certify(gte(0))
if (n <= 2) {
if( n >= 0) 1 else 0
} else {
Recall(n - 1) + Recall(n - 2)
}
}
fib(10)
``````{r, error = TRUE}
fib(1.5)
``````{r, error = TRUE}
fib(-2)
```We can also provide arbitrary conditions to `certify()`:
```{r, error = TRUE}
some_vec <- 1:5
certify(some_vec, ~ any(.x < 2))
``````{r, error = TRUE}
certify(some_vec, ~ mean(.x) > 2)
``````{r, error = TRUE}
certify(some_vec, ~ all(.x <= 5), ~ mean(.x) > 3)
```
---Please note that the 'forge' project is released with a [Contributor Code of Conduct](.github/CODE_OF_CONDUCT.md). By contributing to this project, you agree to abide by its terms.