我试图使用这一行对数据帧的每一行进行排序,
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)
您可以将其转置(将其转换为矩阵),然后按列和排序进行拆分
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)