Edited to answer using only the R base
The plyr package has a handy rename() function that does what you ask for. Your modified question only indicates the use of the R base. One easy way to do this is to simply copy the code from plyr::rename and create your own function.
rename <- function (x, replace) { old_names <- names(x) new_names <- unname(replace)[match(old_names, names(replace))] setNames(x, ifelse(is.na(new_names), old_names, new_names)) }
The rename function takes an argument, which is a named vector, where the elements of the vectors are the new names, and the vector names are the existing names. There are many ways to create such a named vector. In the example below, I just use structure .
x <- c("mpg", "disp", "wt") some.names <- structure(paste0("baR.", x), names=x) some.names mpg disp wt "baR.mpg" "baR.disp" "baR.wt"
Now you are ready to rename:
mtcars <- rename(mtcars, replace=some.names)
Results:
'data.frame': 32 obs. of 11 variables: $ baR.mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... $ cyl : num 6 6 4 6 8 6 8 4 4 6 ... $ baR.disp: num 160 160 108 258 360 ... $ hp : num 110 110 93 110 175 105 245 62 95 123 ... $ drat : num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... $ baR.wt : num 2.62 2.88 2.32 3.21 3.44 ... $ qsec : num 16.5 17 18.6 19.4 17 ... $ vs : num 0 0 1 1 0 1 0 1 1 1 ... $ am : num 1 1 1 0 0 0 0 0 0 0 ... $ gear : num 4 4 4 3 3 3 3 4 4 4 ... $ carb : num 4 4 1 1 2 1 4 2 2 4 ...
source share