May this be fine ? foo <- function(df) { x <- df[, 1, drop = FALSE] available <- rev(letters[(letters %in% colnames(df)) == FALSE]) colnames(x) <- available[1] dfOut <- data.frame(df, x) dfOut } Data <- data.frame(x = c(1, 2), y = c(3, 4)) foo(Data) x y z 1 1 3 1 2 2 4 2 -- GG [[alternative HTML version deleted]]