Я знаю, если у меня есть фрейм данных с более чем 1 столбцом, я могу использовать
colnames(x) <- c("col1","col2")
переименовать столбцы. Как мне это сделать, если это всего лишь один столбец? Значение вектора или фрейма данных с одним столбцом.
Пример:
trSamp <- data.frame(sample(trainer$index, 10000))
head(trSamp )
# sample.trainer.index..10000.
# 1 5907862
# 2 2181266
# 3 7368504
# 4 1949790
# 5 3475174
# 6 6062879
ncol(trSamp)
# [1] 1
class(trSamp)
# [1] "data.frame"
class(trSamp[1])
# [1] "data.frame"
class(trSamp[,1])
# [1] "numeric"
colnames(trSamp)[2] <- "newname2"
# Error in names(x) <- value :
# 'names' attribute [2] must be the same length as the vector [1]
drop=TRUE
умолчанию аргумент to[
, который приводит к тому , что объект «1 столбец» преобразуется в вектор ... а векторы не имеютcolnames
. Пример того, что вы попробовали, был бы очень полезен.Ответы:
пытается установить имя второго столбца. Ваш объект имеет только один столбец, поэтому команда выдает ошибку. Этого должно быть достаточно:
источник
"A,B,C,X,Y,Z"
где я хочу , чтобы переименовать его вY
использованииtestData[379] <- "Y"
.Это обобщенный способ, при котором вам не нужно запоминать точное местоположение переменной:
Этот код в значительной степени делает следующее:
names(df)
смотрит на все имена вdf
[names(df) == old.var.name]
извлекает имя переменной, которую вы хотите проверить<- 'new.var.name'
назначает новое имя переменной.источник
[names(df) == old.var.name]
самом деле возвращает вектор со значениями true / false. Таким образом, он может изменить несколько имен столбцов, если, например, используются регулярные выражения.names(df) = sub('pattern', 'replacement', names(df))
. В противном случае вы пытаетесь установить несколько столбцов с одинаковым именем.источник
colnames(GWASDATA_RAWSELECTION)[colnames(GWASDATA_RAWSELECTION)=="^snp$"] <- "Marker"
поскольку столбец не переименован. Если яnames(GWASDATA_RAWSELECTION)[names(GWASDATA_RAWSELECTION)=="snp"] <- "Marker"
это будет переименован. Чего мне не хватает?Это старый вопрос, но стоит отметить, что теперь вы можете использовать его
setnames
изdata.table
пакета.источник
setNames
с базы R.Это также можно сделать с помощью
plyr
пакета Хэдли иrename
функции.Вы можете переименовать по имени (не зная позиции) и выполнить несколько переименований одновременно. Например, после слияния вы можете получить:
Который вы можете затем переименовать в один шаг, используя:
источник
rename
теперь также является функцией вdplyr
пакете.Я думаю, что лучший способ переименовать столбцы - использовать пакет dplyr , например так:
Он работает одинаково для переименования одного или нескольких столбцов в любом наборе данных.
источник
Мне нравится следующий стиль для переименования имен столбцов dataframe один за другим.
где
возвращает по индексу конкретного столбца.
источник
which()
не обязательно.Я считаю, что наиболее удобный способ переименовать один столбец заключается в использовании
dplyr::rename_at
:источник
Вы можете использовать
rename.vars
вgdata
пакете.Это особенно полезно, когда вам нужно изменить несколько имен переменных или вы хотите добавить или предварительно добавить какой-либо текст к именам переменных, тогда вы можете сделать что-то вроде:
Пример добавления текста в подмножество имен переменных см .: https://stackoverflow.com/a/28870000/180892.
источник
Пытаться:
источник
"A,B,C,X,Y,Z"
где я хочу , чтобы переименовать его вY
использованииtestData[379] <- "Y"
.Это, вероятно, уже там, но я играл с переименованием полей, когда искал решение, и попробовал это по прихоти. Работал для моих целей.
Редактирование начинается здесь ....
Это работает также.
источник
rename
функция?Если вы знаете, что ваш фрейм данных имеет только один столбец, вы можете использовать:
names(trSamp) <- "newname2"
источник
Вы также можете попробовать «upData» из пакета «Hmisc».
library(Hmisc)
trSamp = upData(trSamp, rename=c(sample.trainer.index..10000. = 'newname2'))
источник
Вопрос ОП был хорошо и верно ответил. Однако вот прием, который может быть полезен в некоторых ситуациях: частичное совпадение имени столбца, независимо от его положения в кадре данных:
Частичное совпадение по названию:
Другой пример: частичное совпадение на наличие «пунктуации»:
Это были примеры, с которыми мне приходилось сталкиваться сегодня, и я подумал, что стоит поделиться.
источник
Мне
colnames()
легче поспорить https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/row%2Bcolnamesвыберите некоторый столбец из фрейма данных
и переименуйте выбранный столбец по порядку,
проверьте имена и значения, чтобы быть уверенным
источник
Мы можем использовать
rename_with
для переименования столбцов с помощью функции (stringr
например, функции).Рассмотрим следующие данные
df_1
:Переименуйте все переменные с помощью
dplyr::everything()
:Переименовать имя частицы с некоторыми
dplyr
глаголами (starts_with
,ends_with
,contains
,matches
, ...).Пример с
.
(x
переменными):Переименовать класс с большим количеством функций тестирования класса, как
is.integer
,is.numeric
,is.factor
...Пример с
is.integer
(y
):Предупреждение:
Это не имеет значения, так как это просто несоответствие
seq_along(.)
функции замены.источник
Я просто добавил бы новый столбец к фрейму данных с нужным именем и получил бы данные для него из существующего столбца. как это:
тогда я уберу старую колонку! как это:
Этот код может показаться глупым! Но это работает отлично ...
источник
Я просто изменил бы имя столбца на набор данных с новым желаемым именем со следующим кодом: names (набор данных) [index_value] <- "new_col_name"
источник
источник