While it is possible to use the relevel
function, it would be a lot more complicated than needed. You can do this with just the factor
function and the mixedsort
function from the gtools package:
> library(gtools)
> tmp2 <- factor( sample( paste0("D", 1:25), 100, TRUE ) )
> tmp2
[1] D19 D2 D24 D4 D6 D13 D4 D16 D3 D13 D14 D3 D5 D23 D14 D3 D23 D9
[19] D4 D19 D15 D10 D19 D17 D5 D21 D15 D22 D1 D9 D13 D8 D25 D12 D6 D23
[37] D11 D13 D19 D12 D12 D11 D20 D11 D8 D13 D18 D25 D14 D15 D18 D23 D22 D1
[55] D4 D20 D13 D7 D3 D12 D9 D8 D10 D13 D2 D5 D1 D13 D14 D13 D4 D2
[73] D21 D9 D21 D24 D25 D21 D20 D11 D17 D2 D7 D12 D13 D6 D13 D21 D3 D3
[91] D15 D9 D7 D13 D25 D2 D2 D8 D10 D3
25 Levels: D1 D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D2 D20 D21 D22 ... D9
> tmp2 <- factor(tmp2, levels=mixedsort(levels(tmp2)))
> tmp2
[1] D19 D2 D24 D4 D6 D13 D4 D16 D3 D13 D14 D3 D5 D23 D14 D3 D23 D9
[19] D4 D19 D15 D10 D19 D17 D5 D21 D15 D22 D1 D9 D13 D8 D25 D12 D6 D23
[37] D11 D13 D19 D12 D12 D11 D20 D11 D8 D13 D18 D25 D14 D15 D18 D23 D22 D1
[55] D4 D20 D13 D7 D3 D12 D9 D8 D10 D13 D2 D5 D1 D13 D14 D13 D4 D2
[73] D21 D9 D21 D24 D25 D21 D20 D11 D17 D2 D7 D12 D13 D6 D13 D21 D3 D3
[91] D15 D9 D7 D13 D25 D2 D2 D8 D10 D3
25 Levels: D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 ... D25
>