I want to pivot_longer() my data frame to contain a column with the row number of the original data. Consider the following data frame:
set.seed(0)
df <- data.frame(
  a = runif(3),
  b = runif(3),
  c = runif(3)
) %>% mutate("row_id" = row_number())
> df
          a         b         c row_id
1 0.8966972 0.5728534 0.8983897      1
2 0.2655087 0.9082078 0.9446753      2
3 0.3721239 0.2016819 0.6607978      3
The desired output should look like this:
   name   value  row_id
   <chr>  <dbl>  <int>
 1 a      0.897  1
 2 b      0.573  1
 3 c      0.898  1
 4 a      0.266  2
 5 b      0.908  2
 6 c      0.945  2
 7 a      0.372  3
 8 b      0.202  3
 9 c      0.661  3
After reading ?pivot_longer I tried to accomplish this by specifying names_pattern and names_to in the following way:
result <- df %>% tidyr::pivot_longer(
  cols = everything(),
  names_to = c(".value", "row_id"),
  names_pattern = "(.)([row_id])"
)
But end up with an output I don't really understand:
# A tibble: 6 x 2
  row_id     r
  <chr>  <int>
1 NA        NA
2 o          1
3 NA        NA
4 o          2
5 NA        NA
6 o          3
I thought [row_id] should define a column by it's literal name. What am I doing wrong?
Thanks
 
     
    