无法在渲染 reactable 时对数据框的列中的变量进行排序
<p>我在我的数据中有一列变量的顺序不正确,我需要改变它们的顺序以正确地可视化渲染。</p>
<p>我提供了一个可重现的示例,以便更容易理解:</p>
<pre class="brush:php;toolbar:false;">library(reactable)
library(dplyr)
species <- c("setosa", "versicolor")
df <- iris %>%
filter(Species %in% species)
numbers <- c( 100, 300,400, 50)
type <- rep(numbers, times=25)
df1 <- df %>% mutate(type = type)
df2 <- df1 %>%
mutate(species_type= case_when(Species == "setosa" ~ paste0(Species,": ", type),
Species == "versicolor" ~ paste0(type,": ", Species),
TRUE ~ Species ))
columns <- list(colDef(minWidth = 140), colDef(align = "center"))
columns <- setNames(columns, names(df2)[2:3])
reactable(df2, columns = columns)</pre>
<p>我需要在渲染的表格中对species_type进行排序,使得带有50的species_type首先出现,我有一个预先计算好的数据框,其顺序与上面的示例相似。然而,我尝试在渲染之前进行排序,但是在表格中仍然得不到正确的顺序。
我应该如何做?我尝试了排序,非常感谢!</p>
一种选择是在将数据传递给
reactable之前,根据type重新排列(不确定为什么这对您不起作用)。注意:我通过只保留
iris中的Species列和每个Species四行来简化了示例数据。library(reactable) library(dplyr) species <- c("setosa", "versicolor") df <- iris[c(1:4, 51:54), ] %> select(Species) %> filter(Species %in% species) numbers <- c(100, 300, 400, 50) type <- rep(numbers, times = 2) df1 <- df %>% mutate(type = type) df2 <- df1 %> mutate(species_type = case_when( Species == "setosa" ~ paste0(Species, ": ", type), Species == "versicolor" ~ paste0(type, ": ", Species), TRUE ~ Species )) columns <- list(colDef(minWidth = 140), colDef(align = "center")) columns <- setNames(columns, names(df2)[2:3]) df2 %> arrange(type) %> reactable(, columns = columns)第二种选择是使用
defaultSorted参数按type排序: