在dplyr中,如何对数据帧中的行进行采样,并将条件(sum和min)应用于一个或多个列?

在dplyr中,如何对数据帧中的行进行采样,并将条件(sum和min)应用于一个或多个列?,r,dplyr,R,Dplyr,我有如下数据: Object Rank Cost OBJ1 1 3 OBJ2 2 3 OBJ3 3 2.5 OBJ4 4 1.5 OBJ5 5 0 OBJ6 6 1 OBJ7 7 0 OBJ8 8 0 OBJ9 9 1 OBJ10 10 0 OBJ11 11 2 OBJ12 12 1 O

我有如下数据:

Object  Rank    Cost
OBJ1    1       3
OBJ2    2       3
OBJ3    3       2.5
OBJ4    4       1.5
OBJ5    5       0
OBJ6    6       1
OBJ7    7       0
OBJ8    8       0
OBJ9    9       1
OBJ10   10      0
OBJ11   11      2
OBJ12   12      1
OBJ13   13      2.5
OBJ14   14      1
OBJ15   15      1
OBJ16   16      3
OBJ17   17      0
OBJ18   18      0
OBJ19   19      0
我希望使用dplyr随机选择5行,这样这5行的cost列的和正好等于5,而抽样的5行的秩和具有最低的可能值。这是一个简化的示例,但我的实际数据有更多的行。有没有办法不用写循环就能做到这一点

以下是数据:

x <- structure(list(Object = structure(c(1L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L), 
    .Label = c("OBJ1", "OBJ10", "OBJ11", "OBJ12", "OBJ13", "OBJ14", "OBJ15", "OBJ16", "OBJ17", "OBJ18", "OBJ19", "OBJ2", "OBJ3", "OBJ4", "OBJ5", "OBJ6", "OBJ7", "OBJ8", "OBJ9"), class = "factor"), 
    Rank1 = 1:19, Cost = c(3, 3, 2.5, 1.5, 0, 1, 0, 0, 1, 0, 2, 1, 2.5, 1, 1, 3, 0, 0, 0)), 
    .Names = c("Object", "Rank1", "Cost"), class = "data.frame", row.names = c(NA, -19L))

x听起来像是对一个NP完全问题(非常困难)的重述。
Filter(函数(l){l[[2]==5},combn(nrow(x),5,FUN=函数(i){list(i,sum(x$Cost[i]),simplify=FALSE)[[1][[1]][[1]],但它不能很好地扩展。稍微简单一点:
Filter(函数(i){sum(x$Cost[i])=5},combn(nrow(x),5,simplify=FALSE))[[1]]