pacomet - 2 months ago 14x

R Question

I need to change/invert rows in my data frame, not transposing the data but moving the bottom row to the top and so on. If the data frame was:

`1 2 3`

4 5 6

7 8 9

I need to convert to

`7 8 9`

4 5 6

1 2 3

I've read about

`sort()`

Answer

There probably are more elegant ways, but this works:

```
m <- matrix(1:9, ncol=3, byrow=TRUE)
# m[rev(seq_len(nrow(m))), ] # Initial answer
m[nrow(m):1, ]
[,1] [,2] [,3]
[1,] 7 8 9
[2,] 4 5 6
[3,] 1 2 3
```

This works because you are indexing the matrix with a reversed sequence of integers as the row index. `nrow(m):1`

results in `3 2 1`

.

Source (Stackoverflow)

Comments