#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
что usingdf_metbal_slcut
вызвал фрейм данных в консоли с первым столбцом с именем totrucknumber
, но, как вы сказали, он ничему не был назначен. Я буду следить за этим в будущем. Еще раз спасибо, что нашли время ответить на мои вопросы. Это очень ценится.