strtrim: Shorten Strings to Specified Width

Description

Right-trims strings so that they do not exceed a given width (as determined by stri_width).

Usage

strtrim(x, width)

Arguments

x

character vector whose elements are to be trimmed

width

numeric vector giving the widths to which the corresponding strings are to be trimmed

Details

Both arguments are recycled if necessary.

Not to be confused with trimws.

Might be useful when displaying strings using a monospaced font.

Value

Returns a character vector (in UTF-8). Preserves object attributes in a similar way as Arithmetic operators.

Differences from Base R

Replacement for base strtrim implemented with (special case of) stri_sprintf.

  • both arguments are not recycled in an usual manner [fixed here]

  • missing values are not allowed in width [fixed here]

  • some emojis, combining characters and modifiers (e.g., skin tones) are not recognised properly [fixed here]

  • attributes are only propagated from the 1st argument [fixed]

Author(s)

Marek Gagolewski

See Also

The official online manual of stringx at https://stringx.gagolewski.com/

Related function(s): sprintf, substr, nchar

Examples

base::strtrim("aaaaa", 1:3)
## [1] "a"
stringx::strtrim("aaaaa", 1:3)
## [1] "a"   "aa"  "aaa"
x <- c(
    "\U0001F4A9",
    "\U0001F64D\U0001F3FC\U0000200D\U00002642\U0000FE0F",
    "\U0001F64D\U0001F3FB\U0000200D\U00002642",
    "\U000026F9\U0001F3FF\U0000200D\U00002640\U0000FE0F",
    "\U0001F3F4\U000E0067\U000E0062\U000E0073\U000E0063\U000E0074\U000E007F"
)
print(x)
## [1] "💩"    "🙍🏼‍♂️" "🙍🏻‍♂" "⛹🏿‍♀️"  "🏴󠁧󠁢󠁳󠁣󠁴󠁿"
base::strtrim(x, 2)
## [1] "💩" "🙍" "🙍" "⛹"  "🏴󠁧󠁢󠁳󠁣󠁴󠁿"
stringx::strtrim(x, 2)
## [1] "💩"    "🙍🏼‍♂️" "🙍🏻‍♂" "⛹🏿‍♀️"  "🏴󠁧󠁢󠁳󠁣󠁴󠁿"