Удаление первого символа из нескольких имен столбцов

Мой вопрос касается переименования нескольких имен столбцов одновременно.

У меня есть фрейм данных под названием «рост» с 46 столбцами.

Все столбцы 2:46 названы датами, но перед всеми датами стоит X, например: «Х1981».

Естественно, я хочу удалить X из всех имен столбцов.

Я не могу понять, почему не работает следующее:

colnames(growth[ ,2:length(growth)]) <- substring(colnames(growth[ ,2:length(growth)]),2)

Пожалуйста, помогите мне с некоторыми идеями.


person Wade Byron Profe    schedule 24.06.2018    source источник
comment
Вероятно, связано с этим   -  person David Arenburg    schedule 24.06.2018
comment
На самом деле вам следует преобразовать ваши широкие данные в длинный формат, имея столбец Year и значения в соседнем столбце. Это лучше масштабируется, и вычисления намного проще.   -  person Parfait    schedule 24.06.2018
comment
Возможный дубликат Разница между `names(df[1]) ‹- `и `names(df) [1] ‹- `   -  person Rui Barradas    schedule 24.06.2018


Ответы (1)


Неважно, я изменил инструкцию на...

names(growth)[2:46] <- substring(names(growth)[2:46],2)

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

person Wade Byron Profe    schedule 24.06.2018
comment
Отличная работа. Обратите внимание, что если в столбцах роста 46 столбцов, вы можете заменить 2:46 более кратким -1. - person sindri_baldur; 24.06.2018
comment
Вероятно, это потому, что, выполняя colnames(growth[, 2:46]) <- ..., вы создаете подмножество исходного data.frame, затем создаете вектор символов с помощью вызова substring(), и после этого вы назначаете этот вектор символов ранее созданному подмножеству growth. Таким образом, вывод представляет собой вектор символов (желаемых) имен. Если вы заключите свой код в круглые скобки, вы увидите что-то вроде: [1] "2" "3" "4"..."45" "46". Однако я считаю, что кто-то, кто лучше знает R, объяснит это лучше меня или поправит меня, если я ошибаюсь. - person utubun; 24.06.2018