Explore Courses Blog Tutorials Interview Questions
0 votes
in R Programming by (5.3k points)

Someone should have asked this already, but I couldn't find an answer. Say I have:

x = data.frame(q=1,w=2,e=3, ...and many many columns...)  

what is the most elegant way to rename an arbitrary subset of columns, whose position I don't necessarily know, into some other arbitrary names?

e.g. Say I want to rename "q" and "e" into "A" and "B", what is the most elegant code to do this?

Obviously, I can do a loop:

oldnames = c("q","e")

newnames = c("A","B")

for(i in 1:2) names(x)[names(x) == oldnames[i]] = newnames[i]

But I wonder if there is a better way? Maybe using some of the packages? (plyr::rename etc.)

1 Answer

0 votes

To rename multiple columns by names, you can use the setnames function from the data.table package which also works for a data frame.


d <- data.frame(a=1:2,b=2:3,d=4:5)

setnames(d, old = c('a','d'), new = c('anew','dnew'))

> d

  anew b dnew

1    1 2    4

2    2 3    5

If you want to explore more in R programming then watch this R programming tutorial for beginner:

Related questions

Browse Categories