如何将闭包转换为R中的字符?

时间:2015-06-24 01:14:07

标签: r closures shiny

我想通过用户输入保存数据 我将使用sprintf 下面是我的代码。

ui.r

selectInput(
  "ModelCB", 'Model', choices=NULL, selected = NULL, multiple = FALSE
)  

server.r

shinyServer(function(input, output, session) 
{  
    output$SelectModel <- renderText({   
    paste("You have selected", input$ModelCB)  
    GetModel <- input$ModelCB  
    })    
    TargetModelQuery <- sprintf("SELECT tb_result.mid 
                                 FROM   tb_result
                                 WHERE  name='%s' and result='F'", GetModel)     
})    

我无法使用GetModelTargetModelQuery有错误。
我如何使用GetModel

1 个答案:

答案 0 :(得分:1)

您需要使TargetModelQuery被动,例如,

TargetModelQuery <- reactive({
    sprintf("SELECT tb_result.mid 
             FROM   tb_result
             WHERE  name='%s' and result='F'", input$ModelCB)
})

并通过调用TargetModelQuery()来访问该字符串。

完整示例

library(shiny)
shinyApp(
    shinyUI(
        fluidPage(
            selectInput(
                "ModelCB", 'Model', choices=c("a","b","c"), selected = NULL, multiple = FALSE
            ),
            textOutput("printStr")
        )
    ),
    shinyServer(function(input, output, session) {  
        TargetModelQuery <- reactive({
            sprintf("SELECT tb_result.mid 
                     FROM   tb_result
                     WHERE  name='%s' and result='F'", input$ModelCB)
        })
        output$printStr <- renderText({
            TargetModelQuery()
        })
    })
)