slice {dplyr} | R Documentation

## Choose rows by position

### Description

Choose rows by their ordinal position in the tbl. Grouped tbls use the ordinal position within the group.

### Usage

    slice(.data, ..., .preserve = FALSE)

### Arguments

`.data` | A tbl.
`...` | Integer row values. Provide either positive values to keep, or negative values to drop. The values provided must be either all positive or all negative. Indices beyond the number of rows in the input are silently ignored. The arguments in `...` are automatically quoted and evaluated in the context of the data frame. They support unquoting and splicing. See `vignette("programming")` for an introduction to these concepts.
`.preserve` | when `FALSE` (the default), the grouping structure is recalculated based on the resulting data, otherwise it is kept as is.

### Details

Slice does not work with relational databases because they have no intrinsic notion of row order. If you want to perform the equivalent operation, use `filter()` and `row_number()`.

### Tidy data

When applied to a data frame, row names are silently dropped. To preserve, convert to an explicit variable with `tibble::rownames_to_column()`.

### See Also

Other single table verbs: `arrange`, `filter`, `mutate`, `select`, `summarise`

### Examples

    slice(mtcars, 1L)
    # Similar to tail(mtcars, 1):
    slice(mtcars, n())
    slice(mtcars, 5:n())
    # Rows can be dropped with negative indices:
    slice(mtcars, -5:-n())
    # In this case, the result will be equivalent to:
    slice(mtcars, 1:4)

    by_cyl <- group_by(mtcars, cyl)
    slice(by_cyl, 1:2)

    # Equivalent code using filter that will also work with databases,
    # but won't be as fast for in-memory data. For many databases, you'll
    # need to supply an explicit variable to use to compute the row number.
    filter(mtcars, row_number() == 1L)
    filter(mtcars, row_number() == n())
    filter(mtcars, between(row_number(), 5, n()))

[Package dplyr version 0.8.0.1 Index]