读取在数据表中选择时单元格包含的值

时间:2019-01-21 13:56:01

标签: r shiny dt

我有以下两个数据框:

Name<-c("John","Bob","Jack")
Number<-c(3,3,5)
NN<-data.frame(Name,Number)

d1<-c("a",NA,"b")
d2<-c("a","a","b")
d3<-c(NA,NA,"b")
d4<-c("a","c","b")
d5<-c(NA,"b","b")
NN2<-data.frame(Name,d1,d2,d3,d4,d5)

NN包含名称和NN2中每个名称的非NA输入数。我创建了一个闪亮的应用,其中显示了NN的数据表。我希望能够单击每个名称,并获得带有NN2相对行的第二张表,就像您单击John一样。问题在于,与其通过行和列来识别我选择的名称,还不如:if(input$x3_cells_selected[,1]==1&input$x3_cells_selected[,2]==1)我想通过名称自动识别它。这意味着当我在第一张表中单击John时,该算法将不会看到第一列第一行,但会在第二张表中搜索John数据。

#ui.r
library(shiny)

fluidPage(

  fluidRow(
    DT::dataTableOutput('x3')

  ),
  fluidRow(
    DT::dataTableOutput('x4')
  )

)
#server.r
library(shiny)
library(DT)

shinyServer(function(input, output, session) {

  output$x3 = DT::renderDataTable(datatable(NN,selection = list(target="cell",mode="single")))

  second<-reactive({
    req(input$x3_cells_selected)
    if(input$x3_cells_selected[,1]==1&input$x3_cells_selected[,2]==1){
      NN2[1,2:6]
    }

  })

  output$x4 = DT::renderDataTable(datatable(second(),rownames = F))



})

0 个答案:

没有答案