[英]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.