6

私の質問にはすでに答えがあると確信していましたが、どんなに一生懸命検索しても、この場合に機能する解決策を見つけることができませんでした. したがって、これが些細なことであると見なされる場合は、撮影しないでください。

ここに問題があります:

Shiny を使用して dataTable をレンダリングしていると仮定すると、セルの上にカーソルを置いて、基になるデータセットから動的に出力を表示するときに、すべてのセルの ID (rowID + columnID) を取得したいと思います。ShinyBS やこの例など、マウスオーバーのソリューションが既にあることは知っています。

    #server.R:
    shinyServer(function(input, output) {
  dat <- list(iris,cars) 
  output$tabset <- renderUI({
    tabs <- list()
    for(i in c(1,2)){
      id <- paste("id",i, sep="")
      tabs[[i]] <- tabPanel(title=id,DT::dataTableOutput(outputId=id)) #dynamic panels
    }
    do.call(tabsetPanel,c(tabs, id='Panel'))
  })

  lapply(1:2,function(i){
    id <- paste("id",i, sep="")
    output[[id]] <- DT::renderDataTable({
      dat[[i]]},
      extensions = c('Scroller'),
      options=list(deferRender=TRUE, dom='T<"clear">fitrS', scrollY=540, searchHighlight = TRUE,
                   scrollCollapse=TRUE, autoWidth = TRUE,
                   columnDefs = list(list(width = '60%', targets = '_all',
                                          render = JS("function(data, type, row, meta) {",
                                                      "return type === 'display' && data.length > 5 ?",
                                                      "'<span title=\"' + data + '\">' + data.substr(0, 5) + '...</span>' : data;",
                                                      "}"
                                          )))),
      callback = JS('table.page(3).draw(false);'),
      escape=FALSE, rownames=TRUE,class = 'table-condensed', server=TRUE)
      })
})

そして、ui.R

    #ui.R:
library(shiny)
library(DT)

ui <- fluidPage(
  uiOutput('tabset')
)

長さが 5 以上のセルをトリミングするマウスオーバーがあります。私が今やりたいことは、強調表示されたセルが「id1」のパネルから来ているかどうか、列 Sepal.Length からのものであるかどうかを確認することです。長さで、列 dist からのデータを表示する必要があります。基本的に、静的コンテンツを表示したり、そのセルに既にある文字列を変更したりしたくはありませんが、どのセルがホバーされたかに応じて追加のコンテンツを動的に表示したいと考えています。ShinyとJavaScriptでそれは可能ですか?

ご意見ありがとうございます。

4

0 に答える 0