Возвращаясь к этому, мой старый ответ не был так хорош. Вот лучшая версия с base
функциями:
vapply(strsplit(x, NULL), function(x) paste(sort(x), collapse = ''), '')
Основано на этом тестовом векторе:
NN = 1000000L
starts = seq(1L, NN, by = 100L)
name =
substring(paste(sample(letters, size = NN, replace = TRUE), collapse = ""),
starts, starts + 99L)