In einer Shiny App habe ich eine Spalte von Zahlen in einer datatable
, wo aus Sicherheitsgründen einige Werte unterdrückt wurden und wir diese durch eine bestimmte Zeichenfolge ersetzen möchten , die ich hier anrufen werde "my_string"
. Wenn diese Spalte sortiert wird, müssen diese unterdrückten Werte so sortiert werden, als wären sie weniger als alle tatsächlichen Zahlen. In dieser Spalte sind alle Werte positiv, mit Ausnahme der unterdrückten Werte, die als -1
codiert wurden.R Shiny DataTables ersetzen numerische durch string und sortieren als weniger als numerische Werte
Ich habe versucht Umkodierung der -1
als "my_string"
(die um die Säule zu character
coerces) und mit Hilfe der natural
plug-in die Zeichencodierten Numerik richtig zu sortieren, aber "my_string"
sortiert wird, als ob es größer als alle der numerischen Werte ist .
Ein andere Möglichkeit, dies zu umgehen könnte einen JavaScript
Rückruf zu verwenden, die -1
mit der Zeichenfolge zu ersetzen, aber ich weiß nicht, wie das Skript zu schreiben und richtig fügen Sie es die datatable
zu.
Hier ist mein Versuch mit dem natural
Plug-in. Wenn es funktioniert wie ich will, würde die Zeile mit "my_string" am Ende der Liste statt an der Spitze stehen.
# Example data, representing how the data comes to me
my_mtcars <- mtcars[1:6, 1:4]
my_mtcars[1, 4] <- -1
# Here I am recoding the -1
my_mtcars[my_mtcars == -1] <- 'my_string'
# This is our demo app.R
library(shiny)
library(DT)
ui <- fluidPage(
dataTableOutput('example')
)
server <- function(input, output) {
output$example <- renderDataTable(
my_mtcars,
server = FALSE,
plugins = 'natural',
options = list(columnDefs = list(list(type = 'natural', targets = '_all')))
)
}
shinyApp(ui = ui, server = server)
Perfect, danke! Es ist auch sehr hilfreich zu sehen, wie die allgemeine Dokumentation der Datentabellen dem R 'DT'-Kontext zugeordnet ist. Ein Hinweis für zukünftige Besucher - ich hatte 'server = FALSE' in meinem Beispiel nur aufgenommen, weil das 'natural'-Plug-In dies erfordert, es ist für diese Lösung eigentlich nicht nötig. –