Что пошло не так
Ошибка в вашем коде состоит в том, что он предполагает, что второй .
(в анонимной функции) является tibble , хотя на самом деле это символ вектор.Следовательно, ncol(.)
неуместно, и вместо этого должно быть length(.)
.Кроме того, нет необходимости в seq()
, и, учитывая вывод, который вы запрашивали, он должен начинаться с 1. В конце концов, вам было бы хорошо:
iris %>%
select(Species, everything()) %>% # move the Y variable to the "front"
rename(Y = 1) %>%
rename_at(vars(2:ncol(.)), ~ paste("X", 1:length(.), sep = ""))
Другие ответы предоставляют альтернативные способы выражения этогооперация.Возможно более чистая версия будет
iris %>%
select(Species, everything()) %>% # move the Y variable to the "front"
rename(Y = 1) %>%
rename_at(vars(-1), ~ str_c("X", seq_along(.)))