簡體   English   中英

通過Shiny中的行名列對數據表進行排序

[英]Ordering a datatable by the rownames column in Shiny

iris數據幀的行名稱為“ 1”,“ 2”,“ 3”,... ...當我將第0列設置為可通過DT排序時,排序的行為就好像行名稱是數字一樣:

library(DT)
datatable(iris, 
          options = list(
            columnDefs = list(
              list(orderable=TRUE, targets=0)
            )
          )
) 

在此處輸入圖片說明

尼斯。 現在,當我在Shiny內部執行相同的操作時,其行為有所不同:該排序的行為就像行名是字符串一樣:

library(shiny)
shinyApp(
  ui = fluidPage(fluidRow(column(12, DTOutput('tbl')))),
  server = function(input, output) {
    output$tbl = renderDT(
      iris, options = list(
        columnDefs = list(
          list(orderable=TRUE, targets=0)
        )
      )
    )
  }
)

在此處輸入圖片說明

不是很好。 造成差異的原因是什么? 我想在Shiny中有第一個行為。 作為一種解決方法,我們可以在第一個位置設置一個數字列,並設置rownames=FALSE ,但是我想知道是否有一個更簡單的解決方案,並且對此差異引起了我的興趣。

編輯

我終於以這種方式進行了:

output$tbl = renderDT({
  dt <- datatable(
    iris, options = list(
      columnDefs = list(
        list(orderable=TRUE, targets=0)
      )
    )
  )
  dt$x$data[[1]] <- as.numeric(dt$x$data[[1]]) 
  dt
})

因此,我告訴我我需要50個聲譽才能發表評論,所以這是我在答卷中的評論。

另一個解決方法是執行以下操作:

output$tbl = renderDT({
  dt <- datatable(
    iris %>%
       rownames_to_column("UID") %>%
       select(UID, everything()),
 options = list(
      columnDefs = list(
        list(orderable=TRUE, targets=0)
      )
    )
  )
  dt

它沒有回答您為什么會發生的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM