web-dev-qa-db-fra.com

Ajout de colonnes à une table de données

J'ai un data.frame (ou une matrice ou tout autre objet de structure de données tabulaire d'ailleurs):

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

Et je veux copier une partie de ses colonnes - donnée dans le vecteur ci-dessous:

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

à un nouveau data.table qui a déjà 1 ou plusieurs colonnes:

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

Je recherche quelque chose de plus efficace (et élégant) que:

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

Vous pouvez utiliser cbind:

cbind(dt, df[fields])

Cependant, le moyen le plus efficace restera probablement d'utiliser data.table attribue par référence:

dt[, (fields) := df[fields]]
23
Kevin Ushey

Je pense que tu veux cbind

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