Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
使用动态列名在dplyr中按自定义顺序排列_R_Dplyr - Fatal编程技术网

使用动态列名在dplyr中按自定义顺序排列

使用动态列名在dplyr中按自定义顺序排列,r,dplyr,R,Dplyr,我试图根据某个列来安排一个tibble(但是根据一个变量动态设置的名称来设置列) 下面是我目前正在尝试的代码,但出现了一个错误。代码的第二次粘贴工作正常(我在symbol的列名中硬编码,我希望根据变量设置该列名) 库(tidyverse) 组变量您需要rlang:sym将组变量从字符符号转换为符号符号,然后使用将符号作为列对象进行求值: test_tbl %>% arrange(factor(!!rlang::sym(group_var), levels = order_var)

我试图根据某个列来安排一个tibble(但是根据一个变量动态设置的名称来设置列)

下面是我目前正在尝试的代码,但出现了一个错误。代码的第二次粘贴工作正常(我在symbol的列名中硬编码,我希望根据变量设置该列名)

库(tidyverse)

组变量您需要
rlang:sym
组变量
从字符
符号
转换为符号
符号
,然后使用
将符号作为列对象进行求值:

test_tbl %>% 
    arrange(factor(!!rlang::sym(group_var), levels = order_var), date)

# A tibble: 10,959 x 3
#         date symbol         value
#       <date>  <chr>         <dbl>
# 1 2000-01-01  test1  0.0519143671
# 2 2000-01-02  test1 -0.0464782439
# 3 2000-01-03  test1 -0.0295441613
# ...
测试\u tbl%>%
排列(因子(!!rlang::sym(组变量),级别=订单变量,日期)
#A tibble:10959 x 3
#日期符号值
#                  
#1 2000-01-01测试1 0.0519143671
#2 2000-01-02测试1-0.0464782439
#3 2000-01-03测试1-0.0295441613
# ...

您也可以使用基本R中的
作为.symbol

test_tbl_final <- test_tbl %>%
  dplyr::arrange(factor(!!as.symbol(group_var), levels = order_var), date)
test\u tbl\u final%
dplyr::排列(因子(!!as.symbol(组变量),级别=订单变量,日期)

谢谢,我很喜欢基本的R功能。
test_tbl %>% 
    arrange(factor(!!rlang::sym(group_var), levels = order_var), date)

# A tibble: 10,959 x 3
#         date symbol         value
#       <date>  <chr>         <dbl>
# 1 2000-01-01  test1  0.0519143671
# 2 2000-01-02  test1 -0.0464782439
# 3 2000-01-03  test1 -0.0295441613
# ...
test_tbl_final <- test_tbl %>%
  dplyr::arrange(factor(!!as.symbol(group_var), levels = order_var), date)