Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cbind a dynamic column name from a string in R

Tags:

dataframe

r

I want to cbind a column to the data frame with the column name dynamically assigned from a string

y_attribute = "Survived"
cbind(test_data, y_attribute = NA)

this results in a new column added as y_attribute instead of the required Survived attribute which in provided as a string to the y_attribute variable. What needs to be done to get a column in the data frame with the column name provided from a variable?

like image 939
Rahul Avatar asked Apr 27 '18 14:04

Rahul


Video Answer


2 Answers

You don't actually need cbind to add a new column. Any of these will work:

test_data[, y_attribute] = NA # data frame row,column syntax
test_data[y_attribute] = NA   # list syntax (would work for multiple columns at once)
test_data[[y_attribute]] = NA # list single item syntax (single column only)

New columns are added after the existing columns, just like cbind.

like image 107
Gregor Thomas Avatar answered Oct 12 '22 11:10

Gregor Thomas


We can use tidyverse to do this

library(dplyr)
test_data %>%
     mutate(!! y_attribute := NA)
#   col1 Survived
#1    1       NA
#2    2       NA
#3    3       NA
#4    4       NA
#5    5       NA

data

test_data <- data.frame(col1 = 1:5)
like image 33
akrun Avatar answered Oct 12 '22 12:10

akrun