Причина, по которой ваша версия не выполняет то, что вы ожидаете, заключается в том, что df[1]
создает временный фрейм данных в памяти, затем функция colnames изменяет имя столбца 1 в этом временном фрейме данных (не ваш исходный фрейм данных),но тогда с временным df больше ничего не делается, поэтому он молча отбрасывается.Ваш исходный фрейм данных никогда не затрагивался, поэтому в следующий раз, когда вы выполните colnames(df[1])
, создается новый временный df, копируемый из вашего неизмененного оригинала, и возвращается имя.
Изменение порядка вызова colnames
и подмножествделает то, что вы хотите, как показывают другие ответы.