搜尋

首頁  >  問答  >  主體

無法在渲染 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>
P粉005105443P粉005105443510 天前527

全部回覆(1)我來回復

  • P粉665427988

    P粉6654279882023-08-15 13:04:29

    一種選擇是在將資料傳遞給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排序:

    reactable(df2, columns = columns, defaultSorted = "type")

    回覆
    0
  • 取消回覆