我有一个简单的闪亮应用
#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()
或采用多个值的东西是否可能。我不知道是否可以做到这一点,所以我愿意接受创意。