Генерация последовательности - PullRequest
3 голосов
/ 01 ноября 2011

Мне хочется задать этот простой вопрос, но я не смог его понять.

У меня есть переменная

names <- c("M1", "K2L", "C2L", "N", "R_1_2", "CLA", "T123") # the real dataset has > 6000 valriables 

Я хочу удвоить имена и добавить буквы "a"и "b" и вывод (также учитывайте порядок) будет выглядеть следующим образом:

M1a, M1b, K2La, K2Lb, C2La, C2Lb, Na, Nb, R_1_2a, R_1_2b, CLAa, CLAb, T123a, T123b 

Спасибо за помощь:

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Используйте rep с аргументом each для повторения каждого имени.Затем используйте paste, чтобы объединить их с суффиксом.

paste(rep(names, each = 2), c("a", "b"), sep = "")

Давайте посмотрим на это снова в замедленном режиме:

suffixes <- c("a", "b")  # or letters[1:2] if you're feeling fancy
n_suffixes <- length(suffixes)
repeated_names <- rep(names, each = n_suffixes)
final_names <- paste(repeated_names, suffixes, sep = "")

Необычная альтернативная версия с использованием внешних продуктов:

as.vector(t(outer(names, suffixes, paste, sep = "")))

Хотя я думаю, что это больше для хвастовства, так как он менее читабелен.

1 голос
/ 01 ноября 2011

Другое решение с использованием пакета stringr

library(stringr)
str_c(rep(names, each = 2), c('a', 'b'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...