Если я вас правильно понимаю, вы можете добиться того, что хотите, используя select, манипулируя вектором имен столбцов.
Сначала вам нужна функция, которая принимает вектор имен (предполагается, что он уникален), и две указанные c записи a и b и перемещение a за b. Я думаю, что эта функция помогает (даже если она выглядит немного неуклюже).
move <- function(names, a, b) {
names_without_a <- names[which(names != a)]
b_pos <- which(names_without_a == b)
c(names_without_a[1:b_pos],
a,
names_without_a[(b_pos+1):length(names_without_a)])
}
Теперь вы можете использовать select, например, так:
df <-
iris %>%
select(move(colnames(iris), 'Petal.Width', 'Sepal.Length'))