我很确定我的问题已经有了答案,但无论我搜索多么努力,我都找不到任何可以解决这个问题的解决方案.因此,如果这被认为是微不足道的,请不要拍.
现在问题在于:
假设我们使用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 ?",
"'' + data.substr(0, 5) + '...' : 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,鼠标悬停应该显示来自面板'id2'的数据,它具有与Sepal相同的rowId.长度并应显示列dist的数据.基本上我想要不要呈现静态内容或只是修改已经在该单元格中的字符串,而是根据已经悬停的单元格动态地呈现其他内容.这有可能与Shiny和JavaScript?
感谢您的任何意见.