2017-05-28 103 views
0

我附上了我所指的dataframe的屏幕截圖。 dataframe右括號後面的雙括號

運行像hist(don$TGiving[don$TGiving!=0][don$TGiving[don$TGiving!=0]<=1000])一份聲明中生成如下的一個直方圖:histogram

我無法理解如何解釋雙方括號[] [[]]的表達。我知道[[]]是如何工作的,但對R中的[] [[]]沒有意義。

謝謝。

+0

我認爲你的陳述缺少']'。你的截圖沒有通過。這只是子集,你可以通過鍵入'?'[' – G5W

+0

我發現這個解釋很有用(記住數據框只是列表)http://r4ds.had.co.nz/vectors.html#lists – Phil

+2

看起來像這是'不要花時間'[不要花時間!= 0&不要花時間<= 1000]'? – lukeA

回答

1

如果你有矢量v,並且具有相同的長度作爲v邏輯矢量lvv[lv]回報v只保留行,其中lvTRUE一個子集。我們用v[lv]返回的矢量名稱爲v_lvv_lv的長度等於sum(lv==TRUE)。 現在如果您有,例如您的示例,v[lv][v[lv]<x],您可以將其重寫爲v_lv[v_lv<x]。 這又是v_lv的子集,僅保留邏輯表達式(v_lv<x)TRUE的行。

在您的示例中,您將矢量don$TGiving的子集只保留不同於0的行,然後再次對得到的矢量進行子集以僅保留<=10000的行。您也可以同時執行兩個子集,v[lv1][lv2]v[lv1 & lv2]相同。