Переименование столбцов с индексом с циклом For в R

#r #for-loop #z-index #columnname

Вопрос:

Я пишу этот пост, чтобы попросить совета по циклическому коду для переименования столбцов по индексу.

У меня есть набор данных, в котором столбцы элементов масштаба расположены рядом друг с другом. К сожалению, у них странные названия.

Я хочу переименовать каждый столбец в этом формате: SimRac1, SimRac2, SimRac3…. и так далее. Я знаю расположение столбцов (столбцы с номерами от 30 до 37). Я знаю, что эти элементы шкалы упорядочены таким образом, что их можно называть и нумеровать в увеличенном порядке слева направо.

Код, который у меня сейчас есть, работает, но неэффективен. Существуют и другие шкалы, расположенные в разных местах, которые также необходимо переименовать аналогичным образом. Это привело бы к появлению десятков строк кода.

Смотрите код ниже.

 names(Total)[30] lt;- "SimRac1" names(Total)[31] lt;- "SimRac2" names(Total)[32] lt;- "SimRac3" names(Total)[33] lt;- "SimRac4" names(Total)[34] lt;- "SimRac5" names(Total)[35] lt;- "SimRac6" names(Total)[36] lt;- "SimRac7" names(Total)[37] lt;- "SimRac8"  

Я хочу зациклить этот код, чтобы у меня был только фрагмент кода, который выполняет эту работу. Я подумал, что, возможно, «цикл для» поможет. Следовательно, приведенный ниже код

 for (i in Total[,30:37]){ names(Total)[i] lt;- "SimRac(1:8)" }  

Это, к сожалению, не работает. Этот фрагмент кода выполняется без ошибок, но он ничего не делает.

Сделайте совет.

Ответ №1:

В коде операции «SimRac(1:8)» является константой. Чтобы иметь динамические имена, используйте paste0 . Нам здесь не нужна петля. Мы можем использовать векторизованную функцию для создания имен, а затем назначить имена подмножеству names(Total)

 names(Total)[30:37]lt;-paste0('SimRac', 1:8)