stringi (version 1.6.2)

stri_order: Ordering Permutation


This function finds a permutation which rearranges the strings in a given character vector into the ascending or descending locale-dependent lexicographic order.


stri_order(str, decreasing = FALSE, na_last = TRUE, ..., opts_collator = NULL)



a character vector


a single logical value; should the sort order be nondecreasing (FALSE, default) or nonincreasing (TRUE)?


a single logical value; controls the treatment of NAs in str. If TRUE, then missing values in str are put at the end; if FALSE, they are put at the beginning; if NA, then they are removed from the output


additional settings for opts_collator


a named list with ICU Collator's options, see stri_opts_collator, NULL for default collation options


The function yields an integer vector that gives the sort order.


For more information on ICU's Collator and how to tune it up in stringi, refer to stri_opts_collator.

As usual in stringi, non-character inputs are coerced to strings, see an example below for a somewhat non-intuitive behavior of lexicographic sorting on numeric inputs.

This function uses a stable sort algorithm (STL's stable_sort), which performs up to \(N*log^2(N)\) element comparisons, where \(N\) is the length of str.

For ordering with regards to multiple criteria (such as sorting data frames by more than 1 column), see stri_rank.


Collation - ICU User Guide,

See Also

The official online manual of stringi at

Other locale_sensitive: %s<%(), about_locale, about_search_boundaries, about_search_coll, stri_compare(), stri_count_boundaries(), stri_duplicated(), stri_enc_detect2(), stri_extract_all_boundaries(), stri_locate_all_boundaries(), stri_opts_collator(), stri_rank(), stri_sort_key(), stri_sort(), stri_split_boundaries(), stri_trans_tolower(), stri_unique(), stri_wrap()


stri_order(c('hladny', 'chladny'), locale='pl_PL')
stri_order(c('hladny', 'chladny'), locale='sk_SK')

stri_order(c(1, 100, 2, 101, 11, 10))
stri_order(c(1, 100, 2, 101, 11, 10), numeric=TRUE)
# }