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)
但它的做事方式似乎很慢。
你必须使用吗data.table?apply带有方法的基础 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)