Templating for data frames.
Switch branches/tags
Clone or download

README.md

Travis-CI Build Status codecov.io CRAN_Status_Badge

wildcard

The wildcard package is a templating mechanism for data frames in R. Wildcards are placeholders for text, and you can evaluate them to generate new data frames from templates.

library(wildcard)
myths <- data.frame(
  myth = c("Bigfoot", "UFO", "Loch Ness Monster"), 
  claim = c("various", "day", "day"), 
  note = c("various", "pictures", "reported day"))
myths

##                myth   claim         note
## 1           Bigfoot various      various
## 2               UFO     day     pictures
## 3 Loch Ness Monster     day reported day

wildcard(myths, wildcard = "day", values = c("today", "yesterday"))

##                myth     claim               note
## 1           Bigfoot   various            various
## 2               UFO     today           pictures
## 3               UFO yesterday           pictures
## 4 Loch Ness Monster     today     reported today
## 5 Loch Ness Monster yesterday reported yesterday

Installation

First, ensure that R is installed. To install the latest CRAN release, run

install.packages("wildcard")

To install the development version, get the devtools package and then run

devtools::install_github("wlandau/wildcard", build = TRUE)

If you specify a tag, you can install a GitHub release.

devtools::install_github("wlandau/wildcard@v1.0.1", build = TRUE)

Tutorial

See the package vignette.

vignette(package = "wildcard")
vignette("wildcard")

Troubleshooting

You can submit questions, bug reports, and feature requests to the issue tracker. Please take care to search for duplicates first, even among the closed issues.

Usage

Try out the following or see the CRAN vignette for the output.

wildcard()

library(wildcard)
myths <- data.frame(
  myth = c("Bigfoot", "UFO", "Loch Ness Monster"), 
  claim = c("various", "day", "day"), 
  note = c("various", "pictures", "reported day"))
wildcard(myths, wildcard = "day", values = c("today", "yesterday"))
wildcard(myths, wildcard = "day", values = c("today", "yesterday"),
  expand = FALSE)
wildcard(myths, wildcard = "day", values = c("today", "yesterday"),
  include = "claim")
wildcard(myths, wildcard = "day", values = c("today", "yesterday"),
  exclude = c("claim", "note"))
locations <- data.frame(
  myth = c("Bigfoot", "UFO", "Loch Ness Monster"), 
  origin = "where")
rules <- list(
  where = c("North America", "various", "Scotland"), 
  UFO = c("spaceship", "saucer"))
wildcard(locations, rules = rules, expand = c(FALSE, TRUE))
numbers <- data.frame(x = 4, y = 3, z = 4444, w = 4.434)
wildcard(numbers, wildcard = 4, values = 7)

expandrows()

df <- data.frame(
  ID = c("24601", "Javert", "Fantine"), 
  fate = c("fulfillment", "confusion", "misfortune"))
expandrows(df, n = 2, type = "each")
expandrows(df, n = 2, type = "times")

nofactors()

class(iris$Species)
str(iris)
out <- nofactors(iris)
class(out$Species)
str(out)

A cautionary note

Be sure that wildcards and are not also replacement values.

df <- data.frame(x = "a", y = "b")
rules <- list(a = letters[1:3], b = LETTERS[1:3])
wildcard(df, rules = rules)

##   x y
## 1 a A
## 2 a B
## 3 a C
## 4 A A
## 5 B B
## 6 C C
## 7 c A
## 8 c B
##  c C
## Warning message:
## In check_rules(rules) :
##   In `rules`, some wildcards are also replacement values.
## The returned data frame may be different than you expect,
## and it may depend on the order of the wildcards in `rules`.