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]]
}
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]]
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