strrep: Duplicate Strings¶
Description¶
Concatenate a number of copies of each string.
Usage¶
strrep(x, times)
e1 %x*% e2
Arguments¶
|
character vector (or an object coercible to) whose elements are to be duplicated |
|
numeric vector giving the number of times to repeat the corresponding strings |
Details¶
Both arguments are recycled if necessary.
The `%x*%`
operator mimics a vectorised version of Python’s `*`
for strings (str.__mul__
).
Value¶
A character vector (in UTF-8).
`%x*%`
and strrep
preserve object attributes in a similar way as other Arithmetic operators.
Differences from Base R¶
Replacement for base strrep
implemented with stri_dup
.
partial recycling with no warning “longer object length is not a multiple of shorter object length” [fixed here]
base
strrep
seems to preserve only thenames
attribute, and only if the input is of type character (whilstpaste
preserves nothing) [fixed]overloading
`*.character`
has no effect in R, because S3 method dispatch is done internally with hard-coded support for character arguments. We could have replaced the generic`*`
with the one that callsUseMethod
, but it feels like a too intrusive solution [fixed by introducing`%x+%`
operator]
See Also¶
The official online manual of stringx at https://stringx.gagolewski.com/
Examples¶
x <- structure(c(A="a", B=NA, C="c"), attrib1="value1")
x %x*% 3
## A B C
## "aaa" NA "ccc"
## attr(,"attrib1")
## [1] "value1"
x %x*% 1:3
## A B C
## "a" NA "ccc"
## attr(,"attrib1")
## [1] "value1"
"a" %x*% 1:3
## [1] "a" "aa" "aaa"
stringx::strrep(x, 3)
## A B C
## "aaa" NA "ccc"
## attr(,"attrib1")
## [1] "value1"
base::strrep(x, 3)
## A B C
## "aaa" NA "ccc"
y <- matrix(1:6, nrow=2, dimnames=list(c("A", "B"), NULL))
y %x*% 1:2
## [1] "1" "22" "3" "44" "5" "66"
stringx::strrep(y, 1:2)
## [1] "1" "22" "3" "44" "5" "66"
base::strrep(y, 1:2)
## [1] "1" "22" "3" "44" "5" "66"