strengejacke / sjmisc

Data transformation and utility functions for R

Home Page:https://strengejacke.github.io/sjmisc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`move_columns` does not work when passed a variable in .after

shahronak47 opened this issue · comments

Taken from this SO post it seems there is a bug when we use a variable to refer .before or .after in move_columns function.

Consider this example,

df <- data.frame(a = 1:5, b = 10:14, c = letters[1:5])
df
  a  b c
1 1 10 a
2 2 11 b
3 3 12 c
4 4 13 d
5 5 14 e

move_columns(df, 1, .after = 1) #works fine
   b a c
1 10 1 a
2 11 2 b
3 12 3 c
4 13 4 d
5 14 5 e

index <- 1
move_columns(df, 1, .after = index) #doesn't work as expected. `a` goes to last column.
   b c a
1 10 a 1
2 11 b 2
3 12 c 3
4 13 d 4
5 14 e 5

packageVersion('sjmisc')
[1] ‘2.8.5’

It is possible, you need quasi-quotation:

library(sjmisc)
df <- data.frame(a = 1:5, b = 10:14, c = letters[1:5])
index <- 1
move_columns(df, 1, .after = !!index)
#>    b a c
#> 1 10 1 a
#> 2 11 2 b
#> 3 12 3 c
#> 4 13 4 d
#> 5 14 5 e

Created on 2020-10-30 by the reprex package (v0.3.0)

I revised the docs to make this more explicit.