在闪亮的应用中选择多个范围的数据框行

时间:2018-07-10 23:34:35

标签: r shiny rhandsontable

我有一个简单的闪亮应用

#ui.r
navbarPage(
  "Application",
  tabPanel("General",
           sidebarLayout(

             sidebarPanel(
               uiOutput("book1"),
               uiOutput("book4"),
               uiOutput("book5")


              ),
             mainPanel(
               DT::dataTableOutput("hot3"),
               br(),
               rHandsontableOutput("hot5")
             )
           )))
#server.r
library(shiny)
library(DT)
library(rhandsontable)
server <- function(input, output,session) {



  output$book1<-renderUI({
    numericInput("bk1", 
                 "Items in test", 
                 value = 1)
  })
  output$book4<-renderUI({
    numericInput("bk4", "From",
                 value = 1,
                 min=1,max=input$bk5)


  })
  output$book5<-renderUI({
    numericInput("bk5", "To",
                 value = 1,
                 min=1,max=input$bk1)


  })


  rt2<-reactive({
    DF=data.frame(
      Sel= rep(TRUE, as.numeric(input$bk5-input$bk4+1)),
      Id= (input$bk4:input$bk5),
      Label=paste("Item",input$bk4:input$bk5),
      Pf=as.integer(rep.int(0,as.numeric(input$bk5-input$bk4+1))),
      stringsAsFactors = FALSE
    )
  })
  output$hot5 <-renderRHandsontable({


    rhandsontable(rt2(),width=300,height = 300)


  }) 


}

如您所见,我有3个selectInput()。从第一个开始,我确定数据框的总行数,然后将其他两个用于显示的行范围。我的最终目标是要同时显示多个范围。例如,显示1到5的行,然后选择7到8的行,依此类推。当然,这可以通过其他selectInputs来实现,但这是不切实际的。我在考虑使用textinput()或采用多个值的东西是否可能。我不知道是否可以做到这一点,所以我愿意接受创意。 enter image description here

0 个答案:

没有答案