commit 2271dcc177da8b67a695ff4481c5b026f66a8259
parent fb136a95a87d32685ba342186c77bce2ceeddbc6
Author: eamoncaddigan <eamon.caddigan@gmail.com>
Date: Mon, 29 Feb 2016 11:31:26 -0500
Fixed handling of defaults and added docs.
Diffstat:
7 files changed, 83 insertions(+), 8 deletions(-)
diff --git a/DESCRIPTION b/DESCRIPTION
@@ -5,7 +5,12 @@ Version: 0.1
Date: 2016-02-19
Author: Eamon Caddigan
Maintainer: Eamon Caddigan <eamon.caddigan@gmail.com>
-Description: Extracts information from vectors (or columns) of text data that can take one of several formats by applying regular expressions in turn until a match is found. Mostly useful for ultimately turning such a vector into a data.frame.
+Description: Extracts information from vectors (or columns) of text data that
+ can take one of several formats by applying regular expressions in turn until
+ a match is found. Mostly useful for ultimately turning such a vector into a
+ data.frame.
License: BSD 3
LazyData: TRUE
-Suggests: testthat
+Suggests:
+ testthat
+RoxygenNote: 5.0.1
diff --git a/NAMESPACE b/NAMESPACE
@@ -1 +1,2 @@
-exportPattern("^[[:alpha:]]+")
+# Generated by roxygen2: do not edit by hand
+
diff --git a/R/patternapply.R b/R/patternapply.R
@@ -3,14 +3,14 @@
#'
#' @param X A character vector where matches are sought.
#' @param patterns A vector of regular expression patterns.
-#' @param replacements A list of replacement information, must match the length
-#' of \code(patterns). Each element must be a character vector. This can
-#' include backreferences "\1" to "\9" to parenthesized subexpressions of the
-#' corresponding pattern.
+#' @param replacements A list of replacement information, which must match the
+#' length of \code{patterns}. Each element must be a character vector. This can
+#' include backreferences "\1" to "\9" to parenthesized subexpressions of the
+#' corresponding pattern.
#'
#' @return A list of replacement vectors with class "replacement_list".
patternapply <- function(X, patterns,
- replacements = list(paste(seq_along(patterns)))) {
+ replacements = as.list(paste(seq_along(patterns)))) {
# Check the inputs
if (class(patterns) != "character") {
stop("'patterns' must be a character vector")
diff --git a/man/as.data.frame.replacement_list.Rd b/man/as.data.frame.replacement_list.Rd
@@ -0,0 +1,19 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/generics.R
+\name{as.data.frame.replacement_list}
+\alias{as.data.frame.replacement_list}
+\title{Convert a replacement_list object into a data.frame.}
+\usage{
+\method{as.data.frame}{replacement_list}(x)
+}
+\arguments{
+\item{x}{A replacement_list.}
+}
+\value{
+A data.frame. Each row corresponds to an entry in the
+ replacement_list.
+}
+\description{
+Convert a replacement_list object into a data.frame.
+}
+
diff --git a/man/as.matrix.replacement_list.Rd b/man/as.matrix.replacement_list.Rd
@@ -0,0 +1,19 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/generics.R
+\name{as.matrix.replacement_list}
+\alias{as.matrix.replacement_list}
+\title{Convert a replacement_list object into a character matrix.}
+\usage{
+\method{as.matrix}{replacement_list}(x)
+}
+\arguments{
+\item{x}{A replacement_list.}
+}
+\value{
+A character matrix. Each row corresponds to an entry in the
+ replacement_list.
+}
+\description{
+Convert a replacement_list object into a character matrix.
+}
+
diff --git a/man/patternapply.Rd b/man/patternapply.Rd
@@ -0,0 +1,25 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/patternapply.R
+\name{patternapply}
+\alias{patternapply}
+\title{Iteratively try patterns against a character vector.}
+\usage{
+patternapply(X, patterns, replacements = list(paste(seq_along(patterns))))
+}
+\arguments{
+\item{X}{A character vector where matches are sought.}
+
+\item{patterns}{A vector of regular expression patterns.}
+
+\item{replacements}{A list of replacement information, which must match the
+length of \code{patterns}. Each element must be a character vector. This can
+include backreferences "\1" to "\9" to parenthesized subexpressions of the
+corresponding pattern.}
+}
+\value{
+A list of replacement vectors with class "replacement_list".
+}
+\description{
+Iteratively try patterns against a character vector.
+}
+
diff --git a/tests/testthat/test_patternapply.R b/tests/testthat/test_patternapply.R
@@ -26,3 +26,9 @@ test_that("Bad inputs raise errors", {
expect_error(patternapply(letters, c("a", "b"), list("c")),
"'patterns' and 'replacements' must have the same length")
})
+
+test_that("Default arguments work", {
+ expect_equal(patternapply(paste(1:20), c("^[0-9]$", "^[0-9]{2}$"))[1:20],
+ as.list(c(rep("1", 9), rep("2", 11))))
+})
+