функция переименования plyr не работает

#r

#r

Вопрос:

Я не могу понять, почему эта версия rename функции plyr не работает.

У меня есть фрейм данных, в котором у меня есть один столбец, который в конечном итоге называется seq(var_slcut_trucknumber_min, var_slcut_trucknumber_max) , потому что я сделал это так:

 df_metbal_slcut <- as.data.frame(seq(var_slcut_trucknumber_min,var_slcut_trucknumber_max))
  

Термины var_slcut_trucknumber_min и var_slcut_trucknumber_max определяются как минимальные и максимальные значения другого столбца.

Однако при попытке переименовать ее с помощью следующего кода,

 var_temp <- names(df_metbal_slcut)
df_metbal_slcut <- rename(df_metbal_slcut, c(var_temp="trucknumber"))
  

Я получаю сообщение об ошибке следующего вида:

 The following `from` values were not present in `x`: var_temp
  

Я не понимаю, почему. Я знаю, что могу легко сделать это как colnames(df_metbal_slcut)[1] <- "trucknumber" , но я R n00b, и я просматривал руководство по работе с данными, в котором говорилось, что изучение plyr — это правильный путь, так что здесь я застрял на этом.

Ответ №1:

Попробуйте это вместо:

 df_metbal_slcut <- rename(df_metbal_slcut, setNames("trucknumber",var_temp))
  

Причина, по которой она не работала, заключалась в том, что c(var_temp = "trucknumber") создается именованный вектор с именем var_temp , что не то, что вы намеревались. При создании именованных объектов с использованием tag = value синтаксиса R не будет оценивать переменные. Предполагается, что вы буквально хотите, чтобы имя было var_temp .

В более широком смысле, возможно, имеет смысл назвать столбец более разумно при первоначальном создании фрейма данных снова с помощью setNames .

Комментарии:

1. Спасибо за информацию о setNames. Я попробовал это следующим образом, и это работает. setNames(df_metbal_slcut, c("trucknumber")) Спасибо, что рассмотрели мою проблему. Я «проверю» ваш ответ через 2 минуты, когда SO позволит мне это сделать.

2. Тысяча извинений, но, похоже, что setNames(df_metbal_slcut, c("trucknumber")) на самом деле не изменилось название столбца df_metbal_slcut . Когда я вызываю df_metbal_slcut с View(df_metbal_slcut) помощью, я снова получаю старое имя для первого столбца. setNames Предназначена для использования в функции plyr, а не сама по себе?

3. @ReubenMathew Как и большинство всего в R, вы должны присвоить результат чему-то. setNames ничего не изменяет на месте. например df_metbal_slcut <- setnames(...) .

4. ОК. Я был сбит с толку, потому setNames что using df_metbal_slcut вызвал фрейм данных в консоли с первым столбцом с именем to trucknumber , но, как вы сказали, он ничему не был назначен. Я буду следить за этим в будущем. Еще раз спасибо, что нашли время ответить на мои вопросы. Это очень ценится.