0
我附上了我所指的dataframe的屏幕截图。 右括号后面的双括号
运行像hist(don$TGiving[don$TGiving!=0][don$TGiving[don$TGiving!=0]<=1000])
一份声明中生成如下的一个直方图:
我无法理解如何解释双方括号[] [[]]的表达。我知道[[]]是如何工作的,但对R中的[] [[]]没有意义。
谢谢。
我附上了我所指的dataframe的屏幕截图。 右括号后面的双括号
运行像hist(don$TGiving[don$TGiving!=0][don$TGiving[don$TGiving!=0]<=1000])
一份声明中生成如下的一个直方图:
我无法理解如何解释双方括号[] [[]]的表达。我知道[[]]是如何工作的,但对R中的[] [[]]没有意义。
谢谢。
如果你有矢量v
,并且具有相同的长度作为v
逻辑矢量lv
, v[lv]
回报v
只保留行,其中lv
是TRUE
一个子集。我们用v[lv]
返回的矢量名称为v_lv
。 v_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]
相同。
我认为你的陈述缺少']'。你的截图没有通过。这只是子集,你可以通过键入'?'[' – G5W
我发现这个解释很有用(记住数据框只是列表)http://r4ds.had.co.nz/vectors.html#lists – Phil
看起来像这是'不要花时间'[不要花时间!= 0&不要花时间<= 1000]'? – lukeA