How to Add Prefix to Column Names in R

Spread the love

Adding prefixes to column names in a data frame is an essential skill for data manipulation in R. It is particularly useful when you are dealing with data frames that may have overlapping or ambiguous column names. In this extensive guide, we’ll explore various techniques for adding prefixes to column names in R, each with its own set of advantages and limitations.


In R, a data frame’s column names serve as a crucial way to access and manipulate the data. At times, you may need to add a prefix to these column names for better readability, to prevent conflicts during data merges, or for various other reasons.

Why Add Prefixes?

Adding prefixes can make your data frames more self-explanatory. It can also ease the process of data manipulation, particularly when you are working with multiple data frames with similar or even identical column names.


Basic knowledge of R and data frames is assumed for this article. To follow along, you can create a simple data frame:

# Create a sample data frame
df <- data.frame(
  ID = c(1, 2, 3),
  Name = c('Alice', 'Bob', 'Charlie'),
  Age = c(25, 30, 35)

Methods for Adding Prefixes

Method 1: Base R


Using Base R, you can easily rename all the columns by directly modifying the names() attribute of the data frame.

names(df) <- paste0("prefix_", names(df))


To add the prefix “sample_” to each column:

names(df) <- paste0("sample_", names(df))

Advantages and Disadvantages

  • Advantages: This method is straightforward, and no additional packages are needed.
  • Disadvantages: While this method is effective for quick manipulations, it may not be ideal for complex manipulations or large data frames.

Method 2: dplyr


The dplyr package offers the rename_with() function, which provides an elegant and functional way to rename columns.

df <- df %>% rename_with(~ paste0("prefix_", .x))


First, install and load the dplyr package:


Then you can add the prefix:

df <- df %>% rename_with(~ paste0("sample_", .x))

Advantages and Disadvantages

  • Advantages: The rename_with() function is more readable and can be used within a dplyr chain of commands.
  • Disadvantages: This method requires you to install an additional package.

Method 3: data.table


The data.table package allows you to modify column names by reference, making it highly memory-efficient.

setnames(df, old = names(df), new = paste0("prefix_", names(df)))


First, install and load the data.table package:


Then you can proceed to add the prefix:

setnames(df, old = names(df), new = paste0("sample_", names(df)))

Advantages and Disadvantages

  • Advantages: This method is particularly useful for large data sets due to its memory efficiency.
  • Disadvantages: Like dplyr, this method requires an additional package to be installed.

Method 4: Custom Functions and Loops

Syntax and Usage

For granular control, you can use a for loop or a custom function to rename columns. Here’s a simple loop example:

for(name in names(df)){
  new_name <- paste0("sample_", name)
  names(df)[names(df) == name] <- new_name

Advantages and Disadvantages

  • Advantages: This provides you with full control over the renaming process.
  • Disadvantages: This method can be less efficient and more verbose.

Use Cases

  1. Data Merging: Prefixes can distinguish columns from different data frames after merging.
  2. Data Versioning: If you have different versions of a data frame, adding a version prefix can help.
  3. Multi-source Data: When data comes from multiple sources, a prefix can be added to signify the source.


Adding a prefix to column names in R can be achieved through multiple methods, each with its own benefits and limitations. While base R provides a straightforward approach, specialized packages like dplyr and data.table offer additional functionality and performance gains. Your specific use-case, data size, and performance needs will guide your choice of method. Regardless of which approach you choose, the ability to add prefixes to column names is a valuable tool in your R data manipulation toolkit.

Posted in RTagged

Leave a Reply