sparkline
パッケージを使用して、棒グラフを作成してShinyアプリのdatatable
のセルに配置します。私はスタンドアロンのdatatable
で目的の出力を生成することができましたが、Shinyアプリケーションに配置すると機能しません。 spk_add_deps()
がhtmlウィジェットを識別する方法と関係している可能性があります。私はspk_add_deps()
関数をかなり動かしてみて、さまざまな識別子を渡してみましたが、何も効果がありませんでした。(多くの)JavaScriptに頼らずに、光沢のあるアプリでdatatableセルにsparkline htmlwidgetを組み込みます
私はここにRender datatable with sparklines in Shiny 基本的に同じ質問を見つけたが、与えられた溶液(1)(R sparkline()
機能を持つことの目的を破って)コールバック関数でスパークラインのためのJavaScriptコードを書くことに依存しており、(2)それビューアにスパークラインがレンダリングされた場合、そのJavaScriptをすべて記述することなく、Shinyアプリでレンダリングすることができなくなる可能性があります。ここで
はデモだ:私は自分自身でデータテーブルをレンダリングする場合
# Preliminary, load packages and build a demo table with the sparkline code merged in
library(shiny)
library(DT)
library(data.table)
library(sparkline)
## Create demo data sets
my_mtcars <- data.table(mtcars, keep.rownames = TRUE)
names(my_mtcars)[1] <- 'car_id'
set.seed(0)
data_for_sparklines <- data.table(car_id = rep(my_mtcars$car_id, 5),
category = 1:5,
value = runif(160))
sparkline_html <- data_for_sparklines[, .(sparkbar = spk_chr(value, type = 'bar')), by = 'car_id']
my_mtcars <- merge(my_mtcars, sparkline_html, by = 'car_id')
は今スパークラインのバーグラフが表示されます:
spk_add_deps(datatable(my_mtcars, escape = FALSE))
しかし、私は同じにを埋め込む場合をその列が空白のシャイニーアプリ:
ui <- shinyUI(fluidPage(
dataTableOutput('myTable')
))
server <- shinyServer(function(input, output, session) {
output$myTable <- renderDataTable(spk_add_deps(datatable(my_mtcars, escape = FALSE)))
})
shinyApp(ui = ui, server = server)
htmlウィジェットは、デザインされたJSパッケージでのみ動作する傾向があります。誰かがRでDT + sparklineウィジェットを作成していない限り、あなたは運が悪いと思う。 –