2016-07-10 5 views
1

ich Fehler gemacht habe, mit interessantem Ausgang, korrekter Code ist:R `dplyr` code:` iris%>% dim (.) [1] `Bedeutung?

iris %>% dim(.)%>% .[1] 

falsch ist:

iris %>% dim(.)[1] 

die gibt:

[1] 5.9 5.0 

was in iris %>% dim(.)[1] los?

+1

Es gibt die 5. und 150. Beobachtung der ersten Spalte – akrun

Antwort

3

Die Wirkung des Ausdrucks die Dimensionen von dim zurück zu verwenden ist Einträge in der ersten Spalte des Datenrahmen der Teilmenge:

> dim(iris) 
[1] 150 5 
> iris[,1][c(150, 5)] 
[1] 5.9 5.0 

Wenn Sie die „1“ in dem Index auslassen, können Sie sehen, daß Reihen 150 und 5 werden zurückgegeben:

> iris %>% dim(.)[] 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
150   5.9   3.0   5.1   1.8 virginica 
5   5.0   3.6   1.4   0.2 setosa 

Dieses Verhalten ist so, weil der Punkt magrittr Eigenschaften des Datensatz verwendet werden kann abzurufen, und gibt ihnen als Argument für die Funktionen, in denen genannt werden.

In dem magrittr docs:

help("%>%", magrittr) 

den Punkt für sekundäre Zwecke Verwendung Oft einige Attribute oder Eigenschaft 'lhs' in dem 'rhs' Anruf zusätzlich zu dem gewünschten Wert von "lhs" selbst, z die Anzahl der Zeilen oder Spalten. Es ist durchaus zulässig, den Punktplatzhalter mehrmals im Aufruf von 'rhs' zu verwenden, aber das Verhalten unterscheidet sich geringfügig von , wenn es in verschachtelten Funktionsaufrufen verwendet wird. In insbesondere, wenn der Platzhalter nur in einer verschachtelten Funktion Aufruf verwendet wird, wird "Lhs" auch als erstes Argument platziert werden! Der Grund dafür ist , dass dies in den meisten Anwendungsfällen den am besten lesbaren Code ergibt. Zum Beispiel ist 'iris%>% subset (1: nrow (.) %% 2 == 0)' entspricht 'iris%>% subset (., 1: nrow (.) %% 2 == 0) 'aber etwas kompakter.

in diesem Fall also wird die Untergruppe „Funktion“ ([]) mit der Ausgabe von iris %>% dim aufgerufen wird.