2017-05-28 102 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]相同。