2016-09-07 10 views
0

私は反応性データreact$dataを持っている中で、特定の行を選択するには、と私は私が似たい行を指定することができるだろうか、二つの入力input$chosencolumn、反応性データセットでinput$chosenrowsどのようにRでの反応性のデータセットシャイニー

を持っていますそれだけSAMPにより選択されたデータの行を含むように私はreactdata1$datatable1を変更したい

server.R 

### Start of Shiny server 
shinyServer(function(input, output, session) { 

    reactdata <- reactiveValues() 
    observe({ 
    if(is.null(input$fileinput)){return(NULL)} 
    else{reactdata$inputdata <- read.xlsx(input$fileinput$datapath, header=T, sheetIndex = 1)} 
    }) 



    output$selectsamples <- renderUI({ 
    if(is.null(input$fileinput)){return(NULL)} 
    selectInput("selectsamples", 
       label = h5("Samples"), choices = colnames(reactdata$inputdata), 
       selected="Sample") 
    }) 

    output$sampleselected <- renderUI({ 
    if(is.null(input$fileinput)){return(NULL)} 
    selectInput("sampleselected", 
       label = h5("sampleselected"), choices = unique(as.character(reactdata$inputdata[,input$selectsamples])), 
       selected="B") 
    }) 

    output$selectdilutions <- renderUI({ 
    if(is.null(input$fileinput)){return(NULL)} 
    selectInput("selectdilutions", 
       label=h5("Select Dilutions"), 
       choices = colnames(reactdata$inputdata), 
       selected="Dilution") 
    }) 


    reactdata1 <- reactiveValues() 
    observe({ 
    reactdata1$datatable1 <- datatable(reactdata$inputdata, 
       rownames = TRUE, 
       options = list(pageLength = 100, dom = 'tip')) 

    }) 


    output$datatable1 <- renderDataTable({ 
    reactdata1$datatable1 
    }) 

}) 

ui.R 

require(shiny) 
require(devtools) 
require(grDevices) 
require(xlsx) 
require(DT) 


shinyUI(fluidPage(
    navbarPage("",inverse = FALSE, 
      tabPanel("Analyse")), 
    titlePanel(""), 
    fluidRow(
    column(3, 
      wellPanel(
      fileInput("fileinput", label = h5("Input file")), 
      uiOutput("selectsamples"), 
      uiOutput("sampleselected"), 
      uiOutput("selectdilutions") 
      )), 

    column(9, 
      fluidRow(
      wellPanel(
        uiOutput("sample1"), 
        dataTableOutput("datatable1")) 

      ))) 
    ) 
) 

:あなたはdata[data$chosencolumn == chosenrows,]

再現例を行うdata.frame選択された(すなわち、入力$ sampleselectedの値がとして選択されます)。

ので、reactdata1$datatable1[input$selectsamples == input$sampleselected,]

のようなものは、例えば、データセットはここにある: Dropbox link to excel file

+0

再現可能な例が役に立ちます – jangorecki

+0

私は1を追加しました。 – Kabau

+0

[タグ:data.table] – jangorecki

答えて

0

ここでは、動的に入力されたユーザの入力に基づいて反応data.frameのサブセット一般的な例です:

require(shiny) 

ui <- shinyUI(fluidPage( 
    sidebarLayout(
    sidebarPanel(
     selectInput("dataset", "Choose a dataset:", 
        choices = c("rock", "pressure", "cars","DNase","iris") 
    ), 
     selectizeInput(
     'colName', 'Select Column: ', list(), multiple = TRUE 
    ), 
     selectizeInput(
     'rowName', 'Select Rows', list(), multiple = TRUE 
    ) 
    ), 
    mainPanel(
     tableOutput('tbl') 
    ) 
) #end sidebar layout 
)) 

server <- shinyServer(function(input, output, session) { 

    datasetInput <- reactive({ 
    switch(input$dataset, 
      "rock" = rock, 
      "pressure" = pressure, 
      "cars" = cars, 
      "DNase"=DNase, 
      "iris"=iris) 
    }) 

    # Update UI 
    observe({ 
    updateSelectizeInput(session, "colName", choices = colnames(datasetInput())) 
    updateSelectizeInput(session, "rowName", choices = rownames(datasetInput())) 
    }) 

    # Create reactive data by subseting the reactive dataset 
    r1 <- reactive({ 
    v <- input$colName %in% colnames(datasetInput()) 
    if(sum(v == FALSE) > 0) return() # Check for missmatching datasetInput names and column names 
    if(is.null(input$colName) || is.null(input$rowName)) return() # None selected, return empty 

    # Subset data 
    datasetInput()[as.numeric(input$rowName), input$colName, drop=FALSE] 
    }) 

    output$tbl <- renderTable({ 
    r1() 
    }) 
}) 

shinyApp(ui, server) 
+0

ありがとうございました彼の、この仕事を見て興味深い。私はまだそれを私のために働かせることができませんが、私はそれに行く必要はありませんと思います。私はas.numericが何であるかを本当に理解していません。 – Kabau

+0

'?as.numeric'を実行しようとしました。文字ベクトルを入力$ rowNamesから数値ベクトルに変換します。 –

+0

申し訳ありませんが、私は何を意味しています、なぜそれを数値に変換しようとしていますか?私はあなたの例を私のために同様の方法で働かせることができました。 '$ input、row = FALSE] ==入力$行、]' – Kabau

関連する問題