2013-05-17 14 views
7

Ogni volta che faccio funzionare l'ordine fix(DT) su un data.table, dopo aver chiuso la finestra di correzione, DT si trasforma in un oggetto data.frame. È normale?oggetti Data.table trasformano in data.frame dopo aver chiamato fix()

library(data.table) 
DT <- data.table(a = 1:2, b = 2:3) 

> class(DT) 
[1] "data.table" "data.frame" 

fix(DT) 

# close the window 

> class(DT) 
[1] "data.frame" 

EDIT:

alcune informazioni di sessione:

R version 3.0.0 (2013-04-03) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
+2

Penso che sia normale. 'fix' e' edit' sono funzioni da applicare ai frame di dati, non alle tabelle di dati. Quindi prenderanno una copia di DT, la modificheranno, la restituiranno come un frame di dati e sostituiranno il DT originale con esso. – juba

+4

... e non esiste un metodo data.table per 'edit'. Quindi, dal momento che data.table è anche un data.frame, viene utilizzato 'edit.data.frame'. Non ha senso lavorare su un data.table usando 'fix' comunque. Normalmente il data.set sarà troppo grande per quello. – Roland

+0

se non sei preoccupato dell'efficienza potresti scrivere un metodo 'edit.data.table 'che ha incluso' utils ::: edit.data.frame' ... –

risposta

3

fix invoca edit. Tuttavia, non esiste un metodo data.table per edit (controllare utilizzando methods(edit)). Poiché data.table è anche un data.frame, viene utilizzato invece edit.data.frame e restituisce un data.frame come documentato.

Si potrebbe scrivere il proprio edit.data.table, ma io non lo consiglio, dal momento che data.tables sono spesso troppo grandi per essere modificati in questo modo in modo sensato.

Problemi correlati