Rp的dplyr切片中的奇怪行为

时间:2015-05-27 19:42:50

标签: r dplyr

在dplyr包中为R调用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()和THEN在群组上调用slice()时,这尤其令人厌烦。 slice()这样做有合理的原因吗?

似乎返回的行填充了NAs,行指数大于&#39; nrows&#39;分组不够高#34;生成请求的切片可能是一个有用的结果。

这是因为我试图从每个组中提取排名结果,但有些组没有足够的数据,而其他组则没有。例如&#34;列出每个地区销售额第10高的销售人员。&#34;但在其中一个地区只有8名销售人员。

2 个答案:

答案 0 :(得分:2)

我参加这个派对的时间有点晚了但是这里有。错误消息有一个非常简单的解决方案&#34;错误:不兼容的类型,期待一个字符向量&#34;

只需在ungroup()功能之前插入mutate(),您就可以了。

但我认为它是slice()中某种类​​型的错误。我将提交错误报告。

答案 1 :(得分:0)

我同意:这种行为似乎不对。您可以使用以下替代方法:

{ 
    "query" : {
        "query_string" : {
            "fields" : ["content", "name"],
            "query" : "Minnesota^2 health"
        }    
    }
}