2016-02-09 2 views
1

Я новичок в Rshiny, как мне создать динамическую панель на боковой панели? Я делаю это, но он не работает если есть какие-либо другие предложения для этого? библиотека (блестящий)Как создать динамическую панель Rshiny

shinyUI(fluidPage(theme="style.css", 

    # Application title 
    titlePanel("RNAseq app R "), 
    sidebarLayout(
    sidebarPanel(
    fileInput('file1', 'Choose file to upload', 
       accept = c(
       'text/csv', 
       'text/comma-separated-values', 
       'text/tab-separated-values', 
       'text/plain', 
       '.csv', 
       '.tsv' 
      ) 
    ), 
    tags$hr(), 

    navlistPanel(

     tabPanel("Quality Control"), 
     tabPanel("Trimming"), 

     tabPanel("Alignement") 


    ) 
) 

, 

    mainPanel(
    ) 
    ))) 

сервер

library(shiny) 

shinyServer(function(input, output) { 


}) 

ответ

1

Вы можете использовать conditionalPanel, чтобы сделать это, в моем примере я использовал shinydashboard, как это лучше

rm(list = ls()) 
library(shiny) 
library(shinydashboard) 

ui <- dashboardPage(
    dashboardHeader(title = "Basic Dashboard"), 
    dashboardSidebar(
    sidebarMenu(id="menu1", 
       menuItem("Panel 1", tabName = "name1", icon = icon("th")), 
       menuItem("Input A file", tabName = "name2", icon = icon("th")), 
       conditionalPanel(
        condition = "input.menu1 == 'name2'", 
        fileInput('file1', 'Choose file to upload', 
          accept = c('text/csv', 'text/comma-separated-values', 'text/tab-separated-values','text/plain', '.csv','.tsv')), 
        selectInput("slider_test", "Some Dynamic Slider", choices = list("Years" = 1, "Months" = 2)) 
       ), 
       menuItem("Panel 3", tabName = "name1", icon = icon("th")) 
    ) 
), 
    dashboardBody()) 
server <- function(input, output) {} 
shinyApp(ui, server) 

enter image description here

Edit: Загрузить Всплывающие используя shinyBS пакет

rm(list = ls()) 
library(shiny) 
library(shinydashboard) 
library(shinyBS) 

ui <- dashboardPage(
    dashboardHeader(title = "Basic Dashboard"), 
    dashboardSidebar(
    sidebarMenu(id="menu1", 
       menuItem("Panel 1", tabName = "name1", icon = icon("th")), 
       menuItem("Input A file", tabName = "name2", icon = icon("th")), 
       bsButton("upload", label = "Upload A file", block = TRUE, style="success"), 
       bsModal("upload_popup", "Upload a File", "upload", size = "small", 
         fileInput('file2', 'Choose file to upload',accept = c('text/csv', 'text/comma-separated-values', 'text/tab-separated-values','text/plain', '.csv','.tsv')), 
         bsButton("some_button", label = "Do Something Else", block = TRUE, style="success")) 
    ), 
    conditionalPanel(
     condition = "input.menu1 == 'name2'", 
     fileInput('file1', 'Choose file to upload', 
       accept = c('text/csv', 'text/comma-separated-values', 'text/tab-separated-values','text/plain', '.csv','.tsv')), 
     selectInput("slider_test", "Some Dynamic Slider", choices = list("Years" = 1, "Months" = 2)) 
    ) 
), 
    dashboardBody()) 
server <- function(input, output) {} 
shinyApp(ui, server) 

enter image description here

+0

разве есть в любом случае я могу изправлена ​​позицию содержания меню, я хочу, чтобы это было прямо под каждым пунктом –

+0

Может быть, я могу создать всплывающее окно, которое при нажатии кнопки «вводить файл» или что-то появится в небольшом окне, где вы можете загрузить файл? –

+0

Нет Я добавил пояснения ниже. –

Смежные вопросы