按字母顺序排序行

5

我的数据看起来像这样:

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

我该如何排序行,以获得以下类似结果:
A    B    C    D
A    B    C    D
M    X    Y    Z
L    M    O    P

感谢您的选择,

4个回答

25
t(apply(DF, 1, sort))

t()函数很重要,因为使用apply系列函数进行行操作时会将结果以列主序返回。


2
+1 对于简洁的解决方案,同时解释为什么需要 t()。 - Ben Bolker
除了解释不太正确之外,它不是列优先顺序,而是新维度添加到开头,而不是保留在原始位置。 - hadley
也许我没有理解我们之间的区别。apply()是逐列构建矩阵,对吗? - IRTFM

6
你尝试了什么?使用简单的循环就可以解决这个非常直接和容易的问题。
> 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

2

No plyr answer yet?!

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

library("plyr")

aaply(foo,1,sort)

除了不需要使用 t() 之外,与 DWins 的答案完全相同。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接