y2p
y2p

Reputation: 4931

Sorting rows alphabetically

My data looks like,

A    B    C    D
B    C    A    D
X    Y    M    Z
O    M    L    P

How can I sort the rows to get something like

A    B    C    D
A    B    C    D
M    X    Y    Z
L    M    O    P

Thanks,

Upvotes: 5

Views: 4753

Answers (4)

chinsoon12
chinsoon12

Reputation: 25225

Another fast base R option from Martin Morgan in Fastest way to select i-th highest value from row and assign to new column is

matrix(a[order(row(a), a, method="radix")], ncol=ncol(a))

Timings can be found here

Upvotes: 0

Sacha Epskamp
Sacha Epskamp

Reputation: 47541

No plyr answer yet?!

foo <- matrix(sample(LETTERS,10^2,T),10,10)

library("plyr")

aaply(foo,1,sort)

Exactly the same as DWins answer except that you don't need t()

Upvotes: 2

IRTFM
IRTFM

Reputation: 263301

t(apply(DF, 1, sort))

The t() function is necessary because row operations with the apply family of functions returns the results in column-major order.

Upvotes: 25

Joshua Ulrich
Joshua Ulrich

Reputation: 176648

What did you try? This is really straight-forward and easy to solve with a simple loop.

> s <- x
> for(i in 1:NROW(x)) {
+   s[i,] <- sort(s[i,])
+ }
> s
  V1 V2 V3 V4
1  A  B  C  D
2  A  B  C  D
3  M  X  Y  Z
4  L  M  O  P

Upvotes: 6

Related Questions