2017-05-25 1 views
0

Ich bemerkte, dass, wenn ich das Folgende verwendete, um die Daten zu unterteilen, es einen Datenrahmen zurückgibt.Filteroperation in Zeilen gibt einen Datenrahmen zurück, nicht Datentabelle

dplyr::filter(DT,cond) 

Ich kann es immer zu einer Datentabelle zurück zu konvertieren, aber ich bin neugierig, warum es einen Datenrahmen gibt und wenn es eine Möglichkeit, alle Daten in einem Datentabellenformat zu halten. Hier ist ein Beispiel

irisDT <- as.data.table(iris) 
    class(irisDT) 
    filteredIrisDT <- dplyr::filter(irisDT, Sepal.Length >7) 
    class(filteredIrisDT) 

class(iristDT) kehrt als

[1] "data.table" "data.frame" 

während class(filteredIrisDT) kehrt

[1] "data.frame" 

Der Versuch, meinen Code schlanker und weniger ausführlich zu machen.

+3

Blick auf das Paket 'dtplyr' verwenden. Es wird Objekte in data.table zurückgeben. Laden Sie beide Pakete und verwenden Sie Ihre 'dplyr' Funktionen. Eine andere Möglichkeit wäre 'irisDT [Sepal.Length> 7]' –

+0

hinzuzufügen: trotz 'dtplyr' +' dplyr :: filter' mit der Klasse 'irisDT' erhalten Sie nicht die vollen Leistungsvorteile Verwenden von 'data.table' auf diese Weise. 'irisDT [Sepal.Length> 7]' wird besser funktionieren –

+0

Zugehöriges/Mögliches Duplikat von https://StackOverflow.com/questions/27511604/dplyr-on-data-table-am-i-really-using-data-table – zx8754

Antwort

-1

Wenn Sie nur suchen, um die Daten der Teilmenge können Sie Teilmenge Funktion in R.

filteredIrisDT <- subset(irisDT, Sepal.Length >7) 
Verwandte Themen