对数据框的每一行进行排序

use*_*768 7 sorting r

我试图使用这一行对数据帧的每一行进行排序,

sapply(df, function(x) sort(x))
Run Code Online (Sandbox Code Playgroud)

但是,列正在排序而不是行.

例如,此数据框

5          10          7          1          5
6           3          9          2          4
4           5          1          3          3
Run Code Online (Sandbox Code Playgroud)

最终是这样的:

4           3          1          1          3
5           5          7          2          4
6          10          9          3          5
Run Code Online (Sandbox Code Playgroud)

我想要这个:

1 5 5 7 10
2 3 4 6 9
1 3 3 4 5
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢

cde*_*man 17

您可以使用plain apply函数MARGIN = 1来应用行,然后转置结果.

t(apply(df, 1, sort))
Run Code Online (Sandbox Code Playgroud)


pic*_*ick 5

您可以将其转置(将其转换为矩阵),然后按列和排序进行拆分

t(sapply(split(t(df), col(t(df))), sort))
#   [,1] [,2] [,3] [,4] [,5]
# 1    1    5    5    7   10
# 2    2    3    4    6    9
# 3    1    3    3    4    5
Run Code Online (Sandbox Code Playgroud)

因为data.frame是列的列表,所以当您sapply喜欢它时,您正在对列进行排序.

apply按行

t(apply(df, 1, sort))
Run Code Online (Sandbox Code Playgroud)