2016-11-29 42 views
1

我在mongodb服务器中有一个csv文件。我用下面的代码片段,R,闪亮的动态数据处理和根据条件选择行

library(shiny) 
    shinyServer(

     function(input,output,session) 
     { 
     dataf <-eventReactive(input$load, { 
       con <- mongo(collection = "recent", url = "mongodb:some url") 
       mydata <- con$find() 
      }) 
    output$variables = renderUI({ 
     selectInput('variables', 'Choose the device', outVar()) 
    }) 
    outVar <- reactive({  
     devices <- dataf() 
     ds <- devices$`Source` 
     return(unique(ds)) 
    }) 
     } 

而且DATAF含有类似,

serial no source target r_no 
1    A  B  4 
2    B  C  9 
3    A  E  3 
4    B  A  6 
5    A  F  7 
6    C  G  2 

现在读它R中闪亮,我想只选择对应于特定用户输入行时,由用户在ui.R上的下拉列表按钮中选择。

假设用户选择'A',那么我有整个只有A作为源的行。像,

serial no source target r_no 
    1    A  B  4 
    3    A  E  3 
    5    A  F  7 

我ui.R如下:

library(shiny) 
library(mongolite) 

shinyUI(fluidPage(

    titlePanel(title=h3()), 
    sidebarLayout(
    sidebarPanel(
     uiOutput("variables"), 
     br(), width = 3), 
    mainPanel(uiOutput("tb"))    
) 
) 
) 

如何R中做到这一点闪亮?请告诉我。谢谢。

回答

0

你是在outVar八九不离十,

在server.R添加shinyServer函数内部:

outVar <- reactive({ 

    mongo_results <- dataf() 

    output <- mongo_results[which(mongo_results[,'source'] == input$variables),] 

    return(output) 

}) 
+0

非常感谢。将尝试一下。是否应该包含一个提交按钮或者当用户更改源变量时mongo_results的值是否发生变化? – spencer

+0

我尝试了它,并得到以下错误 - 没有一个活动的反应环境不允许操作。 (你试图做一些只能从被动表达或观察者内部完成的事情。) – spencer

+0

对不起,那是我的错。我得到了所需的输出。你的回答很有魅力。非常感谢。假设我必须合并2个条件,是否使用'&&'类似输出< - mongo_results [which(mongo_results [,'source'] == input $ variables && mongo_results [,'source'] == input $ variables1),] ? – spencer