Facendo una fusione tra un data.table popolata e un altro che è introduce una riga vuota NA nel data.table risultante:merge.data.table con all = True introduce la riga NA. È corretto?
a = data.table(c=c(1,2),key='c')
b = data.table(c=3,key='c')
b=b[c!=3]
b
# Empty data.table (0 rows) of 1 col: c
merge(a,b,all=T)
# c
# 1: NA
# 2: 1
# 3: 2
Perché? Mi aspettavo che sarebbe tornato solo le righe di data.table a
, come fa con merge.data.frame:
> merge.data.frame(a,b,all=T,by='c')
# c
#1 1
#2 2
Quindi si desidera unire 'a' con una tabella di dati vuota' b'. Perché introduci 'b' in un modo così insolito? Perché non usare 'b = data.table()'? – user974514
@ user974514: Volevo solo riprodurre il problema come appariva nel mio codice. Generalmente i 'data.table' nel mio codice sono popolati, ma a volte no, e nel mio caso le tabelle sono codificate e l'unione utilizza naturalmente queste chiavi. Un semplice 'data.table()' non riproduce esattamente il problema che ho avuto. – vsalmendra
@ user974514, che darebbe un valore NULL.table (0 righe e colonne) e non ci sarà alcuna colonna "chiave". Quindi, l'unione non sarebbe possibile. – Arun