Как заменить только последний символ нескольких имен переменных в R?

Ниже приведена некоторая справочная информация о моем наборе данных, если вы хотите понять, откуда взялся мой вопрос (на самом деле я хочу объединить наборы данных, так что, возможно, кто-то знает более эффективный способ).

Вопрос: Как заменить только последний символ имени переменной в R ничем (для нескольких переменных)?

Я попытался использовать функцию sub(), и она работала нормально, однако некоторые имена переменных содержат символ, который я хочу изменить несколько раз (например, str2tt2). Я хочу только «удалить» или заменить последние «2» пробелом.

Пример. Предположим, у меня есть набор данных с этими именами переменных, и я хочу удалить только последние символы «_2», я пробовал это:

  h_2ello_2 how_2 are_2 you_2
1         1     3     5     7
2         2     4     6     8

names(data) <- sub('_2', '', names(data))

Выход:

  hello_2   how are you
1       1     3   5   7
2       2     4   6   8

Теперь я хочу, чтобы мой код удалял последний «_2», чтобы он возвращал «h_2ello» вместо hello_2.

Кто-нибудь знает, как? Заранее спасибо!


Исходная информация:

В настоящее время я пытаюсь создать набор данных из трех отдельных. Эти три разных значения относятся к трем разным моментам измерения, и, таким образом, их имена переменных включают символ после каждого имени переменной, соответствующего их моменту измерения. То есть для момента измерения 2 именами переменных являются scoreA2, scoreB2, scoreC2, а для момента измерения 3 именами переменных являются scoreA3, scoreB3 и scoreC3.

Поскольку я хочу объединить эти файлы вместе, я хочу удалить «2» и «3» в наборах данных, а затем объединить их, чтобы казалось, что все были измерены в один и тот же момент.

Однако некоторые названия партитур также включают символы 2 и 3. Например: str2tt2 — это имя переменной для карты Stroop 2, момент измерения общего времени 2. Я хочу удалить только последние «2», но при использовании функции sub() я удаляю только первый.


person Hannie    schedule 10.08.2017    source источник


Ответы (1)


Нам нужно использовать метасимвол $, предлагающий конец строки в именах столбцов исходного набора данных.

names(data) <- sub('_2$', '', names(data))
names(data)
#[1] "h_2ello" "how"     "are"     "you"

В коде OP _2 соответствует первому экземпляру в h_2ello_2, поскольку это sub, и удаляет _2 из h_2. Вместо этого нам нужно указать позицию, которая будет последними символами строки.

person akrun    schedule 10.08.2017