Как условно переименовать несколько столбцов информационного кадра, используя значения из последовательности в качестве новых имен переменных? - PullRequest
0 голосов
/ 04 марта 2019

Я хотел бы использовать значения этой последовательности seq для переименования столбцов x1 в x10 фрейма данных df.

последовательность - имена переменных, которые будут использоваться

var_names<-seq(10, 23.5, 1.5)

фрейм данных, где все переменные, начинающиеся с x, должны быть переименованы в значения последовательности var_names

df = 
  data.frame( x1 = rlnorm(10000), x2 = rlnorm(10000), x3 = rlnorm(10000), x4 = rlnorm(10000), x5 = rlnorm(10000), x6 = rlnorm(10000), x7 = rlnorm(10000), x8 = rlnorm(10000), x9 = rlnorm(10000), x10 = rlnorm(10000))

моя попытка

df_renamed <- apply(df, 2, function(x) data.table::setnames(df, old=colnames(x), new=var_names))

## Error in data.table::setnames(df, old = colnames(x), new = var_names) : 
##  'new' is not a character vector 

ожидаемый результат

В выходном кадре данных я хочу заменить имена переменных x1 на 10, x2 на 11,5, x3 на 13, x4 на 14,5, x5 на 16, x6 на 17,5, x7 на 19,x8 на 20,5, x9 на 22, x10 на 23,5.

Хотя эту замену имен переменных можно выполнить индивидуально, используя this и другие подходы, когда столбцов всего несколько, я хочуфункция, которая эффективно выполняет работу с большими наборами данных, используя непосредственно последовательность var_names и используя тот факт, что все переменные, которые должны быть переименованы, начинаются с x.

1 Ответ

0 голосов
/ 04 марта 2019

Возможно, colnames справится с работой

colnames(df) <- var_names

Просто замечание: не самая лучшая идея иметь числа в качестве имен столбцов, так как это может сбивать с толку и с ними нелегко работать (например,вам нужно заключать такие имена в кавычки ``)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...