Sample n rows from a table
sample_n()
and sample_frac()
have been superseded in favour of
slice_sample()
. While they will not be deprecated in the near future,
retirement means that we will only perform critical bug fixes, so we recommend
moving to the newer alternative.
These functions were superseded because we realised it was more convenient to
have two mutually exclusive arguments to one function, rather than two
separate functions. This also made it to clean up a few other smaller
design issues with sample_n()
/sample_frac
:
The connection to slice()
was not obvious.
The name of the first argument, tbl
, is inconsistent with other
single table verbs which use .data
.
The size
argument uses tidy evaluation, which is surprising and
undocumented.
It was easier to remove the deprecated .env
argument.
...
was in a suboptimal position.
sample_n(tbl, size, replace = FALSE, weight = NULL, .env = NULL, ...) sample_frac(tbl, size = 1, replace = FALSE, weight = NULL, .env = NULL, ...)
tbl |
A data.frame. |
size |
< |
replace |
Sample with or without replacement? |
weight |
< |
.env |
DEPRECATED. |
... |
ignored |
by_cyl <- mtcars %>% group_by(cyl) # sample_n() -> slice_sample() ---------------------------------------------- sample_n(mtcars, 10) sample_n(mtcars, 50, replace = TRUE) sample_n(mtcars, 10, weight = mpg) # Changes: # * explicitly name the `n` argument, # * the `weight` argument is now `weight_by`. slice_sample(mtcars, n = 10) slice_sample(mtcars, n = 50, replace = TRUE) slice_sample(mtcars, n = 10, weight_by = mpg) # Note that sample_n() would error if n was bigger than the group size # slice_sample() will just use the available rows for consistency with # the other slice helpers like slice_head() # sample_frac() -> slice_sample() ------------------------------------------- sample_frac(mtcars) sample_frac(mtcars, replace = TRUE) # Changes: # * use prop = 1 to randomly sample all rows slice_sample(mtcars, prop = 1) slice_sample(mtcars, prop = 1, replace = TRUE)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.