Adding Columns to a Data Table

Adding Columns to a Data Table

I have a data.frame (or a matrix or any other tabular data structure object for that matter):

df = data.frame(field1 = c(1,1,1),field2 = c(2,2,2),field3 = c(3,3,3))

And I want to copy part of its columns - given in the vector below:

fields = c("field1","field2")

to a new data.table that already has 1 or more columns:

dt = data.table(fieldX = c("x","x","x"))

I'm looking for something more efficient (and elegant) than:

for(f in 1:length(fields))
{
dt[,fields[f]] = df[,fields[f]]
}
2

2 Answers

You can use cbind:

cbind(dt, df[fields])

However, the most efficient way is still probably going to be to use data.table's assign by reference:

dt[, (fields) := df[fields]]
1

I think you want cbind

cbind(dt, df[, 1:2])
# fieldX field1 field2
# 1      x      1      2
# 2      x      1      2
# 3      x      1      2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett
Author

Chloe Bennett

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.