2013-05-17 9 views
7

Za każdym razem, gdy uruchomię polecenie fix(DT) na data.table, po zamknięciu okna poprawki, DT zamienia się w obiekt data.frame. Czy to normalne?Obiekty data.table zmieniają się w data.frame po wywołaniu 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:

kilka informacji sesja:

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

Myślę, że to normalne. 'fix' i' edit' to funkcje, które należy zastosować do ramek danych, a nie do tabel danych. Więc wezmą kopię DT, zmodyfikują ją, zwrócą ją jako ramkę danych i zastąpią oryginalnym DT. – juba

+4

... i nie ma metody data.table dla 'edit'. Tak więc, ponieważ data.table jest także data.frame, używane jest 'edit.data.frame'. Nie ma sensu pracować na data.table przy użyciu 'fix' tak czy inaczej. Zwykle plik data.set będzie na to zbyt duży. – Roland

+0

Jeśli nie martwisz się o wydajność, możesz napisać metodę 'edit.data.table', która zawijała' utils ::: edit.data.frame' ... –

Odpowiedz

3

fix wywołuje edit. Jednak nie istnieje metoda data.table dla edit (sprawdź przy użyciu methods(edit)). Ponieważ data.table jest również data.frame, zamiast tego używana jest nazwa edit.data.frame, która zwraca document.frame jako udokumentowany.

Można napisać własną wersję edit.data.table, ale nie polecam jej, ponieważ data.tables są często zbyt duże, aby można je było w rozsądny sposób edytować.

Powiązane problemy