我有一个简单的闪亮应用程序。
#ui.r
navbarPage(
"Application",
tabPanel("General",
sidebarLayout(
sidebarPanel(
uiOutput("book4"),
uiOutput("book5"),
uiOutput("book6"),
uiOutput("book7")
),
mainPanel(
DT::dataTableOutput("hot5")
)
)))
#server.r
library(shiny)
library(DT)
library(tidyverse)
server <- function(input, output,session) {
output$book4<-renderUI({
numericInput("bk4", "From",
value = 1,
min=1,max=input$bk5)
})
output$book5<-renderUI({
numericInput("bk5", "To",
value = 1,
min=1,max=10)
})
output$book6<-renderUI({
numericInput("bk6", "From",
value = 1,
min=1,max=10)
})
output$book7<-renderUI({
numericInput("bk7", "To",
value = 1,
min=1,max=10)
})
rt2<-reactive({
DF=data.frame(
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 <-DT::renderDataTable(
rt2()%>%
rowid_to_column("Row") %>%
mutate(Row = ""),
rownames = FALSE,
extensions = "Select",
options = list(
columnDefs = list(list(className = "select-checkbox", targets = 0, orderable = FALSE)),
select = list(style = "multi", selector = "td:first-child")
)
)
}
如您所见,我使用一对numericInput()
(从-到)设置将在数据表中显示的行范围。在此下方,我有第二对,我想用它来选择不同的范围并同时在表中显示它。例如,我可以从第一对中选择第二到第六行,并从第二对中选择第八到第十行。请注意,这两对不应以相同的值作为输入。例如,如果我在第一个范围中选择一个2到4的范围,那么将排除第二到第4行以在第二个范围中进行选择。
答案 0 :(得分:1)
为什么不像这样将它们组合成一个数据框:
rt2<-reactive({
DF=data.frame(
Id= unique(c(input$bk4:input$bk5,input$bk6:input$bk7)),
Label=paste("Item",unique(c(input$bk4:input$bk5,input$bk6:input$bk7))),
Pf=as.integer(rep.int(0,length(unique(c(input$bk4:input$bk5,input$bk6:input$bk7))))),
stringsAsFactors = FALSE
)
})