无法在DT包中选择/点击列的索引以获得闪亮的

时间:2015-11-12 03:33:28

标签: r shiny dt

我正在尝试在R闪亮框架中创建一个基本程序,以便我可以显示交互式数据表。我需要执行的基本功能,但无法获取任何选定/单击的单元格的行和列索引。我已经在线完成了研究并完全按照教程进行了研究,但教程中显示的内容似乎并不起作用。由于我认为获得点击更难,我已经确定了获取所选单元格的行和列索引。这是我目前对ui.R和server.R文件的所有内容:

library(shiny)
library(shinyTable)
library(DT)

server <- function(input, output, session) {
  lastTransToMat = data.table(cbind(c(.5,.5),c(.8,.2)))
  output$transtable = DT::renderDataTable(lastTransToMat,options = list(target = 'column+row'))

  output$response <-DT::renderDataTable({
    rows= as.numeric(input$transtable_rows_selected)
    cols = as.numeric(input$transtable_columns_selected)

    print(rows)
    print(cols)

    response = data.table(cbind(c(paste0("rows: ",rows),c(paste0("cols: " ,cols)))))
    print(response)
    return(response)

  })
}

shinyUI(fluidPage(
  titlePanel("transition table"),
    mainPanel(
      DT::dataTableOutput('transtable'),
      DT::dataTableOutput('response')
    )
))

当我对此运行App()时,我只能获取行的索引,而不能获取列的索引。见下面的输出:

numeric(0)
        V1
1: rows: 1
2:  cols:

闪亮的应用程序本身有类似的data.table输出。

有谁知道为什么会这样?

如何获取选区的行索引和列索引?那么点击呢?

最佳,

编辑:

根据user5029763的建议,我用以下内容替换了我的server.R功能:

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

shinyUI(fluidPage(
  titlePanel("transition table"),
  mainPanel(
    DT::dataTableOutput('transtable'),
    DT::dataTableOutput('response'),
    htmlOutput('response2')
  )
))

#server.R
server <- function(input, output, session) {
  lastTransToMat = data.table(cbind(c(.5,.5),c(.8,.2)))
  output$transtable = DT::renderDataTable(lastTransToMat,server = F,options = list(target = 'cell'))

  output$response <-DT::renderDataTable({
    cell= as.numeric(input$transtable_cell_clicked)
    print(cell)
    response = data.table(cbind(c(paste0("cell: "),c(paste0(cell)))))
    print(response)
    return(response)

  })

  output$response2 <- renderUI({
    cells <- input$transtable_cell_clicked
    if(length(cells) == 0) return( div('No cell is selected') )
    cells <- data.frame(cells)[-3]
    response <- paste0(c('Row', 'Column'), ': ', cells, collapse = ' / ')
    div(response)
  })
}

点击前输出:

before

点击/选择后的输出: enter image description here

这与您在此上运行App()时获得的输出相同吗?

编辑:也就是仅供参考,我在另一台计算机上尝试使用最新版本的R并获得相同的输出,因此我不认为它与我的版本/计算机有关。

1 个答案:

答案 0 :(得分:0)

如果你想要的是获得点击单元格的索引,你可以选择:

input$transtable_cell_clicked

然后,output$response2 <- renderUI({ cells <- input$transtable_cell_clicked if(length(cells) == 0) return( div('No cell is selected') ) cells <- data.frame(cells)[-3] response <- paste0(c('Row', 'Column'), ': ', cells, collapse = ' / ') div(response) }) 将是一个包含行/列索引的列表以及单元格中的值。请记住,列索引从0开始。

编辑:打印出来的一种方式

#server.R

htmlOutput('response2')

#ui.R

if (windowAspectRatio > imageAspectRatio) {
  yPos = (yPos / imageHeight) * 100;
  xPos = (xPos / imageWidth) * 100;
} else {
  yPos = ((yPos / (windowAspectRatio / imageAspectRatio)) / imageHeight) * 100;
  xPos = ((xPos / (windowAspectRatio / imageAspectRatio)) / imageWidth) * 100;
}