Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何做一般订单_R - Fatal编程技术网

R 如何做一般订单

R 如何做一般订单,r,R,我有一个数据库作为数据框架,我想对所有列进行排序,但保留元素之间的关系。 例如,如果我执行以下操作: > 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

我有一个数据库作为数据框架,我想对所有列进行排序,但保留元素之间的关系。 例如,如果我执行以下操作:

> 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\u 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

伟大的非常感谢你,阿克伦。我还有一个关于sqldf包的问题,我想知道你是否可以帮我解决另一件事。问题:如何保持初始行顺序。@您在问题中没有提到
sqldf
部分。从你的评论中不清楚你在说什么expect@akrun:这是今天我第二次意识到答案已经由你发布了,当时我还在编辑我的:)在
dplyr
中还有
arrange\u all()
,所以只要
DF%>%arrange\u all()
就可以了,非常感谢你的帮助