【发布时间】:2015-05-27 19:42:49
【问题描述】:
在 R 的 dplyr 包中调用 slice(df, i) 时,如果我要求的行索引不存在 (nrows < i),它似乎会返回除组中的第一行之外的所有行,就像我调用的那样slice(df, -1).
例如:
library(dplyr)
c1 <- c("a","b","c")
c2 <- 1:3
df <- data.frame(c1,c2)
slice(df,2)
结果会如预期:
b 2
但是如果我打电话
slice(df, 5)
结果是每一行但第一行:
b 2
c 3
当使用group_by() 然后在组上调用slice() 时,这尤其令人讨厌。 slice() 这样做有合理的原因吗?
看起来返回填充了 NA 的行索引大于 'nrows' 在组中“不够高”以产生请求的切片可能是一个有用的结果。
这是因为我试图从每个组中提取排名结果,但有些组没有足够的数据,而另一些组则有。例如“列出每个地区销售额排名第 10 的销售人员。”但其中一个地区只有 8 名销售人员。
【问题讨论】:
-
请在您的帖子中添加一个可重现的示例。
-
更多关于如何给minimal reproducible example的信息。
-
感谢您的提示。
-
类似的问题也适用于
slice(df,0),它应该返回一个“空”的data.frame,就像df[0,]一样。 -
哦,试试
slice(df,NA_integer_)让 R 崩溃。