我正在尝试使用此行对数据框的每一行进行排序
sapply(df, function(x) sort(x))
但是,列正在排序而不是行。
例如,此数据框
5 10 7 1 5
6 3 9 2 4
4 5 1 3 3
结尾如下:
4 3 1 1 3
5 5 7 2 4
6 10 9 3 5
我想要这个:
1 5 5 7 10
2 3 4 6 9
1 3 3 4 5
有什么建议吗?感谢
答案 0 :(得分:17)
你可以使用普通的apply
函数和MARGIN = 1
来应用行,然后转置结果。
t(apply(df, 1, sort))
答案 1 :(得分: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
因为data.frame是一个列列表,所以sapply
就像那样对列进行排序。
或apply
t(apply(df, 1, sort))