Skip to content

Commit

Permalink
Rename str_join to str_c, leaving old name as alias
Browse files Browse the repository at this point in the history
  • Loading branch information
hadley committed Dec 1, 2009
1 parent dfc0115 commit a421803
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 33 deletions.
2 changes: 1 addition & 1 deletion R/dup.r
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ str_dup <- function(string, times) {

# rep_matrix <- matrix(rep(string, times = times), nrow = times)
strings <- mlply(cbind(x = string, times), rep.int)
output <- unlist(llply(strings, str_join, collapse = ""))
output <- unlist(llply(strings, str_c, collapse = ""))

names(output) <- names(string)
output
Expand Down
17 changes: 9 additions & 8 deletions R/join.r
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,16 @@
#' NULL, a character vector of length 1.
#' @keywords character
#' @seealso \code{\link{paste}} which this function wraps
#' @alias str_c str_c
#' @examples
#' str_join("Letter: ", letters)
#' str_join("Letter", letters, sep = ": ")
#' str_join(letters, " is for", "...")
#' str_join(letters[-26], " comes before ", letters[-1])
#' str_c("Letter: ", letters)
#' str_c("Letter", letters, sep = ": ")
#' str_c(letters, " is for", "...")
#' str_c(letters[-26], " comes before ", letters[-1])
#'
#' str_join(letters, collapse = "")
#' str_join(letters, collapse = ", ")
str_join <- function(..., sep = "", collapse = NULL) {
#' str_c(letters, collapse = "")
#' str_c(letters, collapse = ", ")
str_c <- str_join <- function(..., sep = "", collapse = NULL) {
strings <- Filter(function(x) length(x) > 0, list(...))

do.call("paste", c(strings, list(sep = sep, collapse = collapse)))
Expand Down Expand Up @@ -57,5 +58,5 @@ str_pad <- function(string, width, side = "left", pad = " ") {
right <- switch(side,
left = 0, right = needed, center = ceiling(needed / 2))

str_join(str_dup(pad, left), string, str_dup(pad, right))
str_c(str_dup(pad, left), string, str_dup(pad, right))
}
4 changes: 2 additions & 2 deletions R/match.r
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ str_match <- function(string, pattern) {
}

# Break match into capture groups
pattern <- str_join(".*?", pattern, ".*")
replace <- str_join("\\", seq_len(n), collapse = "\u001E")
pattern <- str_c(".*?", pattern, ".*")
replace <- str_c("\\", seq_len(n), collapse = "\u001E")

pieces <- str_replace(matches, pattern, replace)
pieces_matrix <- do.call("rbind", str_split(pieces, "\u001E"))
Expand Down
18 changes: 9 additions & 9 deletions man/str_join.Rd
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
\name{str_join}
\alias{str_join}
\name{str_c}
\alias{str_c}
\title{Join multiple strings into a single string.}
\usage{str_join(..., sep="", collapse)}
\usage{str_c(..., sep="", collapse)}

\description{
Join multiple strings into a single string.
Expand All @@ -18,10 +18,10 @@ are removed}
\item{collapse}{optional string used to combine input vectors into single
string}
}
\examples{str_join("Letter: ", letters)
str_join("Letter", letters, sep = ": ")
str_join(letters, " is for", "...")
str_join(letters[-26], " comes before ", letters[-1])
\examples{str_c("Letter: ", letters)
str_c("Letter", letters, sep = ": ")
str_c(letters, " is for", "...")
str_c(letters[-26], " comes before ", letters[-1])

str_join(letters, collapse = "")
str_join(letters, collapse = ", ")}
str_c(letters, collapse = "")
str_c(letters, collapse = ", ")}
12 changes: 6 additions & 6 deletions tests/test-join.r
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@ context("Joining strings")
test_that("basic case works", {
test <- c("a", "b", "c")

expect_that(str_join(test), equals(test))
expect_that(str_join(test, sep = " "), equals(test))
expect_that(str_join(test, collapse = ""), equals("abc"))
expect_that(str_c(test), equals(test))
expect_that(str_c(test, sep = " "), equals(test))
expect_that(str_c(test, collapse = ""), equals("abc"))
})

test_that("zero length vectors dropped", {
test <- letters[1:3]

expect_that(str_join(test, c()), equals(test))
expect_that(str_join(test, NULL), equals(test))
expect_that(str_c(test, c()), equals(test))
expect_that(str_c(test, NULL), equals(test))

expect_that(
str_join(test, NULL, "a", sep = " "),
str_c(test, NULL, "a", sep = " "),
equals(c("a a", "b a", "c a")))
})
8 changes: 4 additions & 4 deletions tests/test-match.r
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ context("Matching groups")

set.seed(1410)
num <- matrix(sample(9, 10 * 10, rep = T), ncol = 10)
num_flat <- aaply(num, 1, str_join, collapse = "")
num_flat <- aaply(num, 1, str_c, collapse = "")

phones <- str_join(
phones <- str_c(
"(", num[, 1], num[ ,2], num[, 3], ") ",
num[, 4], num[, 5], num[, 6], " ",
num[, 7], num[, 8], num[, 9], num[, 10])
Expand Down Expand Up @@ -38,7 +38,7 @@ test_that("single match works when all match", {

expect_that(matches[, 1], equals(phones))

matches_flat <- aaply(matches[, -1], 1, str_join, collapse = "")
matches_flat <- aaply(matches[, -1], 1, str_c, collapse = "")
expect_that(matches_flat, equals(num_flat))
})

Expand All @@ -54,7 +54,7 @@ test_that("single match works when some don't match", {
})

test_that("multiple match works", {
phones_one <- str_join(phones, collapse = " ")
phones_one <- str_c(phones, collapse = " ")
multi_match <- str_match_all(phones_one,
"\\(([0-9]{3})\\) ([0-9]{3}) ([0-9]{4})")
single_matches <- str_match(phones,
Expand Down
2 changes: 1 addition & 1 deletion tests/test-pad.r
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ context("Test padding")
test_that("long strings are unchanged", {
lengths <- sample(40:100, 10)
strings <- laply(lengths, function(x)
str_join(letters[sample(26, x, rep = T)], collapse = ""))
str_c(letters[sample(26, x, rep = T)], collapse = ""))

padded <- str_pad(strings, width = 30)
expect_that(str_length(padded), equals(str_length(padded)))
Expand Down
4 changes: 2 additions & 2 deletions tests/test-sub.r
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ library(testthat)
library_if_available(stringr)

context("Extracting substrings")
alphabet <- str_join(letters, collapse = "")
alphabet <- str_c(letters, collapse = "")

test_that("correct substring extracted", {
expect_that(str_sub(alphabet, 1, 3), equals("abc"))
expect_that(str_sub(alphabet, 24, 26), equals("xyz"))
})

test_that("arguments expanded to longest", {
alphabet <- str_join(letters, collapse = "")
alphabet <- str_c(letters, collapse = "")

expect_that(
str_sub(alphabet, c(1, 24), c(3, 26)),
Expand Down

0 comments on commit a421803

Please sign in to comment.