#r
#r
Вопрос:
У меня есть вектор с именем myvec. Я хотел бы разделить ее на _
и поменять местами позицию. Каков был бы самый простой способ сделать это?
myvec <- c("08AD09144_NACC022453", "08AD8245_NACC657970")
Результат, который я хочу:
NACC022453_08AD09144, NACC657970_08AD8245
Ответ №1:
Вы можете сделать это с помощью регулярных выражений, собирающих данные в две группы и обменивающих их с помощью обратной ссылки.
myvec <- c("A1_B1", "B2_C1", "D1_A2")
sub('(\w )_(\w )', '\2_\1', myvec)
#[1] "B1_A1" "C1_B2" "A2_D1"
Комментарии:
1. В моих фактических данных это происходит
c("NACC022453_08AD09144", "08AD8245_NACC657970")
. Как мне удалить «?2. @New_to_R Обновите свой пост с вашими фактическими данными и фактическим ожидаемым результатом. Может быть, вам нужно
sub('"(\w )_(\w )"', '\2_\1', myvec)
?3. Мой первоначальный ответ по-прежнему работает для вашего обновленного вопроса.
sub('(\w )_(\w )', '\2_\1', myvec)
возвращает#[1] "NACC022453_08AD09144" "NACC657970_08AD8245"
то же, что и ожидаемый результат. Что вы получаете?4. Я получаю
c("NACC022453_08AD09144", "08AD8245_NACC657970")
. Это то, что я сделалsub('(\w )_(\w )', '\2_\1', covarAA_ADC1_2[2])
5. Попробуйте использовать двойные скобки.
covarAA_ADC1_2[[2]]
Ответ №2:
Мы можем использовать strsplit
из base R
sapply(strsplit(myvec, "_"), function(x) paste(x[2], x[1], sep = "_"))
#[1] "NACC022453_08AD09144" "NACC657970_08AD8245"