Jake
Jake

Reputation: 474

Rename column R

I am trying to rename columns but I do not know if that column will be present in the dataset. I have a large data set and if a certain column name is present I want to rename it. For example:

A   B   C   D   E
1   4   5   9   2
3   5   6   9   1
4   4   4   9   1

newNames <- data %>% rename(1=A,2=B,3=C,4=D,5=E)

This works to rename what is in the dataset but I am looking for the flexibility to add more potential name changes, without an error occurring.

newNames2 <- data %>% rename(1=A,2=B,3=C,4=D,5=E,6=F,7=G)

This ^ will not work it give me an error because F and G are not in the data set.

Is there any way to write a code to ignore the column change if the name does not exist? Thanks!

Upvotes: 1

Views: 1558

Answers (1)

Sotos
Sotos

Reputation: 51602

There can be plenty of ways to do this. One would be to create a named vector with the names and their corresponding 'new name' (as the vector's names) and use that, i.e.

#The below vector v1, uses LETTERS as old names and 1:7 as the new ones
v1 <- setNames(LETTERS[1:7], 1:7)
names(df) <- names(v1)[v1 %in% names(df)]

Upvotes: 2

Related Questions