使用dplyr按所有列排列数据帧

使用dplyr按所有列排列数据帧,r,dplyr,tidyverse,tidyselect,R,Dplyr,Tidyverse,Tidyselect,我正在生成1和0的数据帧,如下所示: 图书馆管理员 图书馆胶水 数值变量% set_namesgluevar{seq_lennum_var}%>% 展开.grid%>% mutatetotal=行总和%>% 选择总计,所有内容%>% 排列总计、描述变量1、变量2、变量3 >总风险1风险2风险3 > 1 0 0 0 0 > 2 1 1 0 0 > 3 1 0 1 0 > 4 1 0

我正在生成1和0的数据帧,如下所示:

图书馆管理员 图书馆胶水 数值变量% set_namesgluevar{seq_lennum_var}%>% 展开.grid%>% mutatetotal=行总和%>% 选择总计,所有内容%>% 排列总计、描述变量1、变量2、变量3 >总风险1风险2风险3 > 1 0 0 0 0 > 2 1 1 0 0 > 3 1 0 1 0 > 4 1 0 0 1 > 5 2 1 1 0 > 6 2 1 0 1 > 7 2 0 1 1 > 8 3 1 1 1 由v0.1.1.9000于2018年1月8日创建

我需要按变量的总和按升序排列,然后按降序排列每个变量。使用dplyr::arrange,这相当简单。不过,我希望有一个更稳健的安排方法。例如,如果num_var更改为,则最后一行也必须更改为arrangetotal、descvar_1、var_2、var_3、var_4。我曾尝试使用tidy selector来安排一切,就像我使用select函数一样,但出现以下错误:

图书馆管理员 图书馆胶水 数值变量% set_namesgluevar{seq_lennum_var}%>% 展开.grid%>% mutatetotal=行总和%>% 选择总计,所有内容%>% 安排总数,描述一切 >排列导入数据中出错,点:评估错误:未注册tidyselect变量。 由v0.1.1.9000于2018年1月8日创建

有没有一种方法可以在不直接命名的情况下选择用于排列的变量?

arrange似乎无法直接使用select helper函数。您可以使用arrange_at、total以升序排列,以及除total select之外的其他变量,使用-one_of total以降序排列:

arrange_at(vars(total, desc(-one_of("total"))))

#  total var_1 var_2 var_3
#1     0     0     0     0
#2     1     1     0     0
#3     1     0     1     0
#4     1     0     0     1
#5     2     1     1     0
#6     2     1     0     1
#7     2     0     1     1
#8     3     1     1     1

可以使用此代码按从左到右的每列排列

library(magrittr) ; library(rlang) ; library(dplyr)
data %>% arrange(!!!syms(colnames(.)))
这是因为arrange不接受tidyselect语法,因此必须为每个名称传递符号或字符串