Skip to contents

Use relocate() to change column positions, using the same syntax as select() to make it easy to move blocks of columns at once.

Usage

# S3 method for class 'RPolarsDataFrame'
relocate(.data, ..., .before = NULL, .after = NULL)

# S3 method for class 'RPolarsLazyFrame'
relocate(.data, ..., .before = NULL, .after = NULL)

Arguments

.data

A Polars Data/LazyFrame

...

Any expression accepted by dplyr::select(): variable names, column numbers, select helpers, etc.

.before, .after

Column name (either quoted or unquoted) that indicates the destination of columns selected by .... Supplying neither will move columns to the left-hand side; specifying both is an error.

Examples

dat <- as_polars_df(mtcars)

dat |>
  relocate(hp, vs, .before = cyl)
#> shape: (32, 11)
#> ┌──────┬───────┬─────┬─────┬───┬───────┬─────┬──────┬──────┐
#> │ mpg  ┆ hp    ┆ vs  ┆ cyl ┆ … ┆ qsec  ┆ am  ┆ gear ┆ carb │
#> │ ---  ┆ ---   ┆ --- ┆ --- ┆   ┆ ---   ┆ --- ┆ ---  ┆ ---  │
#> │ f64  ┆ f64   ┆ f64 ┆ f64 ┆   ┆ f64   ┆ f64 ┆ f64  ┆ f64  │
#> ╞══════╪═══════╪═════╪═════╪═══╪═══════╪═════╪══════╪══════╡
#> │ 21.0 ┆ 110.0 ┆ 0.0 ┆ 6.0 ┆ … ┆ 16.46 ┆ 1.0 ┆ 4.0  ┆ 4.0  │
#> │ 21.0 ┆ 110.0 ┆ 0.0 ┆ 6.0 ┆ … ┆ 17.02 ┆ 1.0 ┆ 4.0  ┆ 4.0  │
#> │ 22.8 ┆ 93.0  ┆ 1.0 ┆ 4.0 ┆ … ┆ 18.61 ┆ 1.0 ┆ 4.0  ┆ 1.0  │
#> │ 21.4 ┆ 110.0 ┆ 1.0 ┆ 6.0 ┆ … ┆ 19.44 ┆ 0.0 ┆ 3.0  ┆ 1.0  │
#> │ 18.7 ┆ 175.0 ┆ 0.0 ┆ 8.0 ┆ … ┆ 17.02 ┆ 0.0 ┆ 3.0  ┆ 2.0  │
#> │ …    ┆ …     ┆ …   ┆ …   ┆ … ┆ …     ┆ …   ┆ …    ┆ …    │
#> │ 30.4 ┆ 113.0 ┆ 1.0 ┆ 4.0 ┆ … ┆ 16.9  ┆ 1.0 ┆ 5.0  ┆ 2.0  │
#> │ 15.8 ┆ 264.0 ┆ 0.0 ┆ 8.0 ┆ … ┆ 14.5  ┆ 1.0 ┆ 5.0  ┆ 4.0  │
#> │ 19.7 ┆ 175.0 ┆ 0.0 ┆ 6.0 ┆ … ┆ 15.5  ┆ 1.0 ┆ 5.0  ┆ 6.0  │
#> │ 15.0 ┆ 335.0 ┆ 0.0 ┆ 8.0 ┆ … ┆ 14.6  ┆ 1.0 ┆ 5.0  ┆ 8.0  │
#> │ 21.4 ┆ 109.0 ┆ 1.0 ┆ 4.0 ┆ … ┆ 18.6  ┆ 1.0 ┆ 4.0  ┆ 2.0  │
#> └──────┴───────┴─────┴─────┴───┴───────┴─────┴──────┴──────┘

# if .before and .after are not specified, selected columns are moved to the
# first positions
dat |>
  relocate(hp, vs)
#> shape: (32, 11)
#> ┌───────┬─────┬──────┬─────┬───┬───────┬─────┬──────┬──────┐
#> │ hp    ┆ vs  ┆ mpg  ┆ cyl ┆ … ┆ qsec  ┆ am  ┆ gear ┆ carb │
#> │ ---   ┆ --- ┆ ---  ┆ --- ┆   ┆ ---   ┆ --- ┆ ---  ┆ ---  │
#> │ f64   ┆ f64 ┆ f64  ┆ f64 ┆   ┆ f64   ┆ f64 ┆ f64  ┆ f64  │
#> ╞═══════╪═════╪══════╪═════╪═══╪═══════╪═════╪══════╪══════╡
#> │ 110.0 ┆ 0.0 ┆ 21.0 ┆ 6.0 ┆ … ┆ 16.46 ┆ 1.0 ┆ 4.0  ┆ 4.0  │
#> │ 110.0 ┆ 0.0 ┆ 21.0 ┆ 6.0 ┆ … ┆ 17.02 ┆ 1.0 ┆ 4.0  ┆ 4.0  │
#> │ 93.0  ┆ 1.0 ┆ 22.8 ┆ 4.0 ┆ … ┆ 18.61 ┆ 1.0 ┆ 4.0  ┆ 1.0  │
#> │ 110.0 ┆ 1.0 ┆ 21.4 ┆ 6.0 ┆ … ┆ 19.44 ┆ 0.0 ┆ 3.0  ┆ 1.0  │
#> │ 175.0 ┆ 0.0 ┆ 18.7 ┆ 8.0 ┆ … ┆ 17.02 ┆ 0.0 ┆ 3.0  ┆ 2.0  │
#> │ …     ┆ …   ┆ …    ┆ …   ┆ … ┆ …     ┆ …   ┆ …    ┆ …    │
#> │ 113.0 ┆ 1.0 ┆ 30.4 ┆ 4.0 ┆ … ┆ 16.9  ┆ 1.0 ┆ 5.0  ┆ 2.0  │
#> │ 264.0 ┆ 0.0 ┆ 15.8 ┆ 8.0 ┆ … ┆ 14.5  ┆ 1.0 ┆ 5.0  ┆ 4.0  │
#> │ 175.0 ┆ 0.0 ┆ 19.7 ┆ 6.0 ┆ … ┆ 15.5  ┆ 1.0 ┆ 5.0  ┆ 6.0  │
#> │ 335.0 ┆ 0.0 ┆ 15.0 ┆ 8.0 ┆ … ┆ 14.6  ┆ 1.0 ┆ 5.0  ┆ 8.0  │
#> │ 109.0 ┆ 1.0 ┆ 21.4 ┆ 4.0 ┆ … ┆ 18.6  ┆ 1.0 ┆ 4.0  ┆ 2.0  │
#> └───────┴─────┴──────┴─────┴───┴───────┴─────┴──────┴──────┘

# .before and .after can be quoted or unquoted
dat |>
  relocate(hp, vs, .after = "gear")
#> shape: (32, 11)
#> ┌──────┬─────┬───────┬──────┬───┬──────┬───────┬─────┬──────┐
#> │ mpg  ┆ cyl ┆ disp  ┆ drat ┆ … ┆ gear ┆ hp    ┆ vs  ┆ carb │
#> │ ---  ┆ --- ┆ ---   ┆ ---  ┆   ┆ ---  ┆ ---   ┆ --- ┆ ---  │
#> │ f64  ┆ f64 ┆ f64   ┆ f64  ┆   ┆ f64  ┆ f64   ┆ f64 ┆ f64  │
#> ╞══════╪═════╪═══════╪══════╪═══╪══════╪═══════╪═════╪══════╡
#> │ 21.0 ┆ 6.0 ┆ 160.0 ┆ 3.9  ┆ … ┆ 4.0  ┆ 110.0 ┆ 0.0 ┆ 4.0  │
#> │ 21.0 ┆ 6.0 ┆ 160.0 ┆ 3.9  ┆ … ┆ 4.0  ┆ 110.0 ┆ 0.0 ┆ 4.0  │
#> │ 22.8 ┆ 4.0 ┆ 108.0 ┆ 3.85 ┆ … ┆ 4.0  ┆ 93.0  ┆ 1.0 ┆ 1.0  │
#> │ 21.4 ┆ 6.0 ┆ 258.0 ┆ 3.08 ┆ … ┆ 3.0  ┆ 110.0 ┆ 1.0 ┆ 1.0  │
#> │ 18.7 ┆ 8.0 ┆ 360.0 ┆ 3.15 ┆ … ┆ 3.0  ┆ 175.0 ┆ 0.0 ┆ 2.0  │
#> │ …    ┆ …   ┆ …     ┆ …    ┆ … ┆ …    ┆ …     ┆ …   ┆ …    │
#> │ 30.4 ┆ 4.0 ┆ 95.1  ┆ 3.77 ┆ … ┆ 5.0  ┆ 113.0 ┆ 1.0 ┆ 2.0  │
#> │ 15.8 ┆ 8.0 ┆ 351.0 ┆ 4.22 ┆ … ┆ 5.0  ┆ 264.0 ┆ 0.0 ┆ 4.0  │
#> │ 19.7 ┆ 6.0 ┆ 145.0 ┆ 3.62 ┆ … ┆ 5.0  ┆ 175.0 ┆ 0.0 ┆ 6.0  │
#> │ 15.0 ┆ 8.0 ┆ 301.0 ┆ 3.54 ┆ … ┆ 5.0  ┆ 335.0 ┆ 0.0 ┆ 8.0  │
#> │ 21.4 ┆ 4.0 ┆ 121.0 ┆ 4.11 ┆ … ┆ 4.0  ┆ 109.0 ┆ 1.0 ┆ 2.0  │
#> └──────┴─────┴───────┴──────┴───┴──────┴───────┴─────┴──────┘

# select helpers are also available
dat |>
  relocate(contains("[aeiou]"))
#> shape: (32, 11)
#> ┌──────┬─────┬───────┬───────┬───┬─────┬─────┬──────┬──────┐
#> │ mpg  ┆ cyl ┆ disp  ┆ hp    ┆ … ┆ vs  ┆ am  ┆ gear ┆ carb │
#> │ ---  ┆ --- ┆ ---   ┆ ---   ┆   ┆ --- ┆ --- ┆ ---  ┆ ---  │
#> │ f64  ┆ f64 ┆ f64   ┆ f64   ┆   ┆ f64 ┆ f64 ┆ f64  ┆ f64  │
#> ╞══════╪═════╪═══════╪═══════╪═══╪═════╪═════╪══════╪══════╡
#> │ 21.0 ┆ 6.0 ┆ 160.0 ┆ 110.0 ┆ … ┆ 0.0 ┆ 1.0 ┆ 4.0  ┆ 4.0  │
#> │ 21.0 ┆ 6.0 ┆ 160.0 ┆ 110.0 ┆ … ┆ 0.0 ┆ 1.0 ┆ 4.0  ┆ 4.0  │
#> │ 22.8 ┆ 4.0 ┆ 108.0 ┆ 93.0  ┆ … ┆ 1.0 ┆ 1.0 ┆ 4.0  ┆ 1.0  │
#> │ 21.4 ┆ 6.0 ┆ 258.0 ┆ 110.0 ┆ … ┆ 1.0 ┆ 0.0 ┆ 3.0  ┆ 1.0  │
#> │ 18.7 ┆ 8.0 ┆ 360.0 ┆ 175.0 ┆ … ┆ 0.0 ┆ 0.0 ┆ 3.0  ┆ 2.0  │
#> │ …    ┆ …   ┆ …     ┆ …     ┆ … ┆ …   ┆ …   ┆ …    ┆ …    │
#> │ 30.4 ┆ 4.0 ┆ 95.1  ┆ 113.0 ┆ … ┆ 1.0 ┆ 1.0 ┆ 5.0  ┆ 2.0  │
#> │ 15.8 ┆ 8.0 ┆ 351.0 ┆ 264.0 ┆ … ┆ 0.0 ┆ 1.0 ┆ 5.0  ┆ 4.0  │
#> │ 19.7 ┆ 6.0 ┆ 145.0 ┆ 175.0 ┆ … ┆ 0.0 ┆ 1.0 ┆ 5.0  ┆ 6.0  │
#> │ 15.0 ┆ 8.0 ┆ 301.0 ┆ 335.0 ┆ … ┆ 0.0 ┆ 1.0 ┆ 5.0  ┆ 8.0  │
#> │ 21.4 ┆ 4.0 ┆ 121.0 ┆ 109.0 ┆ … ┆ 1.0 ┆ 1.0 ┆ 4.0  ┆ 2.0  │
#> └──────┴─────┴───────┴───────┴───┴─────┴─────┴──────┴──────┘

dat |>
  relocate(hp, vs, .after = last_col())
#> shape: (32, 11)
#> ┌──────┬─────┬───────┬──────┬───┬──────┬──────┬───────┬─────┐
#> │ mpg  ┆ cyl ┆ disp  ┆ drat ┆ … ┆ gear ┆ carb ┆ hp    ┆ vs  │
#> │ ---  ┆ --- ┆ ---   ┆ ---  ┆   ┆ ---  ┆ ---  ┆ ---   ┆ --- │
#> │ f64  ┆ f64 ┆ f64   ┆ f64  ┆   ┆ f64  ┆ f64  ┆ f64   ┆ f64 │
#> ╞══════╪═════╪═══════╪══════╪═══╪══════╪══════╪═══════╪═════╡
#> │ 21.0 ┆ 6.0 ┆ 160.0 ┆ 3.9  ┆ … ┆ 4.0  ┆ 4.0  ┆ 110.0 ┆ 0.0 │
#> │ 21.0 ┆ 6.0 ┆ 160.0 ┆ 3.9  ┆ … ┆ 4.0  ┆ 4.0  ┆ 110.0 ┆ 0.0 │
#> │ 22.8 ┆ 4.0 ┆ 108.0 ┆ 3.85 ┆ … ┆ 4.0  ┆ 1.0  ┆ 93.0  ┆ 1.0 │
#> │ 21.4 ┆ 6.0 ┆ 258.0 ┆ 3.08 ┆ … ┆ 3.0  ┆ 1.0  ┆ 110.0 ┆ 1.0 │
#> │ 18.7 ┆ 8.0 ┆ 360.0 ┆ 3.15 ┆ … ┆ 3.0  ┆ 2.0  ┆ 175.0 ┆ 0.0 │
#> │ …    ┆ …   ┆ …     ┆ …    ┆ … ┆ …    ┆ …    ┆ …     ┆ …   │
#> │ 30.4 ┆ 4.0 ┆ 95.1  ┆ 3.77 ┆ … ┆ 5.0  ┆ 2.0  ┆ 113.0 ┆ 1.0 │
#> │ 15.8 ┆ 8.0 ┆ 351.0 ┆ 4.22 ┆ … ┆ 5.0  ┆ 4.0  ┆ 264.0 ┆ 0.0 │
#> │ 19.7 ┆ 6.0 ┆ 145.0 ┆ 3.62 ┆ … ┆ 5.0  ┆ 6.0  ┆ 175.0 ┆ 0.0 │
#> │ 15.0 ┆ 8.0 ┆ 301.0 ┆ 3.54 ┆ … ┆ 5.0  ┆ 8.0  ┆ 335.0 ┆ 0.0 │
#> │ 21.4 ┆ 4.0 ┆ 121.0 ┆ 4.11 ┆ … ┆ 4.0  ┆ 2.0  ┆ 109.0 ┆ 1.0 │
#> └──────┴─────┴───────┴──────┴───┴──────┴──────┴───────┴─────┘