如何对data.table中的每一行进行排序?

ira*_*ira 5 r data.table

data.table在每一行中对值进行排序的方式是什么?我可以轻松地编写一个循环来逐行进行排序,但我认为这不是一种非常聪明的做事方式。

例子:

来个赞吧data.table

df = data.table(ID = c('a', 'b', 'c', 'd', 'e', 'f'),
                v1 = c(1,2,1,3,4,5),
                v2 = c(2,3,6,1,0,2),
                v3 = c(0,0,1,2,3,5))
Run Code Online (Sandbox Code Playgroud)

我可以使用for loop类似这样的方式对此进行排序:

for (i in 1:nrow(df))
{
  df[i, 2:4] = sort(df[i, 2:4], decreasing = T)
}
Run Code Online (Sandbox Code Playgroud)

它给出了预期的结果:

   ID v1 v2 v3
1:  a  2  1  0
2:  b  3  2  0
3:  c  6  1  1
4:  d  3  2  1
5:  e  4  3  0
6:  f  5  5  2
Run Code Online (Sandbox Code Playgroud)

但它的做事方式似乎很慢。

Mau*_*ers 2

你必须使用吗data.tableapply带有方法的基础 R 怎么样MARGIN = 1

df <- as.data.frame(df)
df[-1] <- t(apply(df[-1], 1, function(x) sort(x, decreasing = T)))
df
#  ID v1 v2 v3
#1  a  2  1  0
#2  b  3  2  0
#3  c  6  1  1
#4  d  3  2  1
#5  e  4  3  0
#6  f  5  5  2
Run Code Online (Sandbox Code Playgroud)

  • 他们想要 data.table,如果它是数据框,那么我会作为重复项关闭。 (4认同)