Home > Software engineering >  Using an object to rename a variable in R
Using an object to rename a variable in R

Time:03-26

Within one of my functions, I need to change the name of a variable in a dataset. I created that new variable name and saved it in an object called name. When I rename the variable using the object name, R is making the name of the variable "name" instead of the contents of the object, name. How can I get it to use the object, name instead of the word "name"?

new_name <- paste("New","Name")
#tidyverse approach
library(dplyr)

state_df <- as.data.frame(state.x77)

new_data <- state_df %>% 
  rename(name=Population)

head(new_data)

Base R approach

colnames(new_data)[colnames(new_data)=="Population"] <- name

head(new_data)

CodePudding user response:

You can use {{new_name}}

new_name <- paste("New","Name")


as.data.frame(state.x77) %>% 
  rename({{new_name}}:=Population) %>% 
  head()

           New Name Income Illiteracy Life Exp Murder HS Grad Frost   Area
Alabama        3615   3624        2.1    69.05   15.1    41.3    20  50708
Alaska          365   6315        1.5    69.31   11.3    66.7   152 566432
Arizona        2212   4530        1.8    70.55    7.8    58.1    15 113417
Arkansas       2110   3378        1.9    70.66   10.1    39.9    65  51945
California    21198   5114        1.1    71.71   10.3    62.6    20 156361
Colorado       2541   4884        0.7    72.06    6.8    63.9   166 103766

Alternatively, you can do this

state = as.data.frame(state.x77)
colnames(state)[which(colnames(state)=="Population")] <- new_name
head(state)

           New Name Income Illiteracy Life Exp Murder HS Grad Frost   Area
Alabama        3615   3624        2.1    69.05   15.1    41.3    20  50708
Alaska          365   6315        1.5    69.31   11.3    66.7   152 566432
Arizona        2212   4530        1.8    70.55    7.8    58.1    15 113417
Arkansas       2110   3378        1.9    70.66   10.1    39.9    65  51945
California    21198   5114        1.1    71.71   10.3    62.6    20 156361
Colorado       2541   4884        0.7    72.06    6.8    63.9   166 103766
  • Related