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

4 回答 4

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

t()函数是必要的,因为具有函数族的行操作以apply列优先顺序返回结果。

于 2011-05-19T19:53:03.647 回答
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
于 2011-05-19T19:43:39.910 回答
2

还没plyr回答?!

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

library("plyr")

aaply(foo,1,sort)

与 DWins 的答案完全相同,只是您不需要t()

于 2011-05-20T08:05:41.267 回答
0

Martin Morgan 的另一个快速基础 R 选项以最快的方式从行中选择第 i 个最高值并分配给新列

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

时间可以在这里找到

于 2019-10-25T14:08:51.777 回答