2017-05-28 6 views
0

Ich habe einen Screenshot des Datenrahmens beigefügt, auf den ich mich beziehe. dataframeDoppelte Klammern gefolgt von Klammern in R

eine Anweisung wie hist(don$TGiving[don$TGiving!=0][don$TGiving[don$TGiving!=0]<=1000]) Laufen erzeugt ein Histogramm wie die folgenden: histogram

Ich bin nicht in der Lage zu verstehen, wie die doppelten eckigen Klammern [] [[]] im Ausdruck zu interpretieren. Ich weiß, wie [[]] funktioniert, aber kann nicht Sinn von [] [[]] in R.

Danke machen.

+0

Ich denke, dass Ihre Aussage eine ']' fehlt. Deine Screenshots sind nicht durchgekommen. Dies ist nur eine Teilmenge, über die Sie lesen können, indem Sie '? [' – G5W

+0

Ich finde diese Erklärung hilfreich (denken Sie daran, dass Datenrahmen nur Listen sind) http://r4ds.had.co.nz/vectors.html#lists – Phil

+2

Sieht aus wie es ist 'don $ TGiving [don $ TGiving! = 0 & don $ TGiving <= 1000]'? – lukeA

Antwort

1

Wenn Sie einen Vektor v, und eine logische Vektor lv der gleichen Länge wie v, v[lv] gibt eine Teilmenge v halten nur Zeilen, in denen lvTRUE ist. Lassen Sie uns v_lv den Vektor geben, der durch v[lv] zurückgebracht wird. v_lv hat eine Länge gleich sum(lv==TRUE). Jetzt, wenn Sie, wie in Ihrem Beispiel, v[lv][v[lv]<x] haben, können Sie es als v_lv[v_lv<x] umschreiben. Dies ist wiederum eine Teilmenge von v_lv, die nur Zeilen enthält, in denen der logische Ausdruck (v_lv<x)TRUE ist.

In Ihrem Beispiel, Teilmenge einmal den Vektor don$TGiving, um nur die Zeilen, die sich von 0 unterscheiden, und dann Sie Teilmenge wieder den resultierenden Vektor, um nur die Zeilen zu halten, die <=10000 sind. Sie können auch beide Untergruppen auf einmal durchführen, v[lv1][lv2] entspricht v[lv1 & lv2].

Verwandte Themen