Heim  >  Fragen und Antworten  >  Hauptteil

Beim Rendern reagierbarer Variablen können Variablen in Spalten des Datenrahmens nicht sortiert werden

<p>Ich habe eine Spalte mit Variablen in meinen Daten, die nicht in der richtigen Reihenfolge sind, und ich muss ihre Reihenfolge ändern, um die Visualisierung korrekt darzustellen. </p> <p>Ich habe ein reproduzierbares Beispiel bereitgestellt, um das Verständnis zu erleichtern: </p> <pre class="brush:php;toolbar:false;">library(reactable) Bibliothek(dplyr) Art <- c("setosa", "versicolor") df <- iris %>% Filter(Art %in% Arten) Zahlen <- c( 100, 300,400, 50) Typ <- rep(Zahlen, Zeiten=25) df1 <- df %>% mutate(type = type) df2 <- df1 %>% mutate(species_type= case_when(Species == "setosa" ~ paste0(Species,": ", type), Species == "versicolor" ~ paste0(type,": ", Species), WAHR ~ Arten )) Spalten <- list(colDef(minWidth = 140), colDef(align = "center")) Spalten <- setNames(Spalten, Namen(df2)[2:3]) reagierbar(df2, columns = columns)</pre> <p>Ich muss die Artentypen in der gerenderten Tabelle so sortieren, dass der Artentyp mit 50 zuerst erscheint. Ich habe einen vorberechneten Datenrahmen in einer ähnlichen Reihenfolge wie im obigen Beispiel. Ich habe jedoch versucht, vor dem Rendern zu sortieren, erhalte aber immer noch nicht die richtige Reihenfolge in der Tabelle. Was soll ich machen? Ich habe versucht zu sortieren, vielen Dank! </p>
P粉005105443P粉005105443432 Tage vor451

Antworte allen(1)Ich werde antworten

  • 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")

    Antwort
    0
  • StornierenAntwort