2013-05-30 8 views
5

Supponiamo che io sono dati come questo:accesso colonne Y con i nomi duplicati in j di X [Y, j] si fonde

set.seed(1) 
DT <- data.table(id=rep(1:3,each=3),y=1997L+sample(1:9,9)) 
DT2<- data.table(id=1:3,y=1997L+sample(1:3,3)) 

voglio usare DT2 $ y dopo la fusione con DT. Vedo che questa colonna è chiamato y.1 dopo l'unione

setkey(DT,id) 
names(DT[DT2]) 
# [1] "id" "y" "y.1" 
DT[DT2][,y.1] 
# [1] 1998 1998 1998 2000 2000 2000 1999 1999 1999 

Tuttavia, non posso usarlo con quel nome in j:

DT[DT2,y.1] 
# Error in `[.data.table`(DT, DT2, y.1) : object 'y.1' not found 

Qual è il prefisso segreto o postfix che dovrei usare qui ?

risposta

6

È possibile utilizzare

DT[DT2, i.y] 

e se vi trovate a sorpresa che non è lo stesso output DT[DT2][, y.1], vedere this thread

+0

Ah, grazie. Questo è il comportamento atteso/desiderato, per quanto riguarda i miei usi. Non vedo '.1' o' i' nella documentazione ('?" [. Dati.table "' data.table 1.8.8), anche se penso di averlo visto prima. Mi chiedo perché non sono entrambi chiamati "io" ... – Frank

Problemi correlati