#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)