iris
数据帧的行名称为“ 1”,“ 2”,“ 3”,...
当我将第0列设置为DT
可排序时,该排序的行为就好像行名是数字一样:
library(DT)
datatable(iris,
options = list(
columnDefs = list(
list(orderable=TRUE, targets=0)
)
)
)
好。现在,当我在闪亮内部进行相同的操作时,其行为有所不同:排序的行为就像行名是字符串一样:
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
})
答案 0 :(得分:0)
SO告诉我我需要50名声望才能发表评论,所以这是我在答卷中的评论。
另一种解决方法是执行以下操作:
output$tbl = renderDT({
dt <- datatable(
iris %>%
rownames_to_column("UID") %>%
select(UID, everything()),
options = list(
columnDefs = list(
list(orderable=TRUE, targets=0)
)
)
)
dt
它并没有回答您为什么会发生的问题。