如何重新排序 r 包 gt 中的行标签?

How can I reorder row labels in the r package gt?

我正在尝试重新排序 gt table 中的 row labels 但是,出于某种原因,我正在使用的 forcats 函数似乎正在被 gt 忽略。这是一个可重现的例子来说明我的意思:

(1) 这是仅使用变量 groupcharcurrency:

library(gt)
library(tidyverse)

exibble %>% 
  select(group, char, currency) %>% 
  gt(groupname_col = 'group',
     rowname_col = 'char')  

生成的照片 table:

(2) 假设我希望能够对行标签重新排序,以便 char 在每组中从最大到最小的水果排序。它最终应该看起来像这样:

理想照片table:

(3) 所以我重新调整了 char 并希望 table 中的行标签以新顺序显示:

exibble %>% 
  mutate(charOrdered = fct_relevel(char, c('durian', 'coconut', 'banana', 'apricot', 'honeydew', 'grapefruit', 'fig'))) %>% 
  select(group, charOrdered, currency) %>% 
  gt(groupname_col = 'group', 
     rowname_col = 'charOrdered')

但是,就好像 gt 忽略了 forcats 函数并保留了新变量 charOrdered 的字母顺序。知道为什么会发生这种情况以及如何重新排列行标签吗?

结果 table 的照片(与第一个 table 相同):

我在 macOS Catalina 10.15.6 上使用 R 4.0.2、dplyr 1.0.2、forcats 0.5.0 和 gt 0.2.2 .

我是 R 和堆栈溢出的新手,因此欢迎任何关于如何更好地表达问题的建设性反馈,我们将不胜感激。谢谢!


如果您想知道,我通过创建矢量在 (2) 中创建了理想的 table。但是,这种方法并不理想,因为它效率低且容易出错。

exibble %>% 
  mutate(fruit = c('durian', 'coconut', 'banana', 'apricot', 'honeydew', 'grapefruit', 'fig', NA)) %>% 
  mutate(currency = c('65100.000', '1.390', '17.950', '49.950', '0.440', NA, '13.255', '1325.810')) %>% 
  select(group, fruit, currency) %>% 
  gt(groupname_col = 'group', rowname_col = 'fruit') 

刚刚 arrange 来自 charOrdered:

exibble %>% 
  mutate(charOrdered = fct_relevel(char, c('durian', 'coconut', 'banana', 'apricot', 'honeydew', 'grapefruit', 'fig'))) %>% 

  arrange(charOrdered) %>%

  select(group, charOrdered, currency) %>% 
  group_by(group) %>%
  gt(groupname_col = 'group', 
     rowname_col = 'charOrdered')