meowcat · GitHub

I am filtering a tibble and then want to sample a fraction of rows. It may well be the case that I get zero rows after filtering. In that case I expect slice_sample(prop = ???) to equally return zero rows, since 60% of zero is still zero.

This works fine as long as I don't use weight_by. If I try to weight by a column, slice_sample fails on zero-row tibbles.

Tested on CRAN and on today's github dplyr 1.0.4.9000 (Windows)

tibble(dummy = character(), weight = numeric(0)) %>% slice_sample(prop=0.5)
# A tibble: 0 x 2
# ... with 2 variables: dummy <chr>, weight <dbl>
tibble(dummy = character(), weight = numeric(0)) %>% slice_sample(prop=0.5, weight_by = weight)
# Error in sample.int(n, min(size, n), prob = wt) : 
# too few positive probabilities

Read the original on github.com ↗