作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据库作为数据框,我想对所有列进行排序,但保持元素之间的关系。例如,如果我执行以下操作:
> DF
A B C D
1 11 2 432 4
2 11 3 432 4
3 13 4 241 5
4 42 5 2 3
5 51 5 332 2
6 51 5 332 1
7 51 5 332 1
> DF=DF[order(A,B,C,D),]
> DF
A B C D
1 11 2 432 4
2 11 3 432 4
3 13 4 241 5
4 42 5 2 3
6 51 5 332 1
7 51 5 332 1
5 51 5 332 2
好吧,这就是我想要的(注意最后两行),但我想要一个通用的解决方案,与列数无关。我已经尝试过以下方法,但不起作用。
> DF=DF[order(colnames(DF)),]
> DF
A B C D
1 11 2 432 4
2 11 3 432 4
3 13 4 241 5
4 42 5 2 3
如果有人能帮助我解决这个小问题,我将不胜感激。问候。
最佳答案
我们可以使用 do.call
和 order
对数据集的所有列进行排序
DF[do.call(order, DF),]
如果我们使用 tidyverse
,则 arrange_at
将采用列名称
library(dplyr)
DF %>%
arrange_at(vars(names(.)))
#or as @Sotos commented
#arrange_all()
#or
#arrange(!!! rlang::syms(names(.)))
# A B C D
#1 11 2 432 4
#2 11 3 432 4
#3 13 4 241 5
#4 42 5 2 3
#5 51 5 332 1
#6 51 5 332 1
#7 51 5 332 2
关于r - 如何进行通用订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203262/
我是一名优秀的程序员,十分优秀!