评估闪亮和打印值的功能

时间:2015-05-31 13:11:58

标签: r shiny

假设我有一个接受输入的函数返回一个带有两个值的数据框。我想呈现以下文本:值1是df1$value1,值2是df1$value2。有没有办法做到这一点?

这是我现在的代码:

## app.R ##
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(),
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(renderText(paste('Value 1 is', "df1$value1"))),

      box(
        title = "Controls",
        sliderInput("slider", "X:", 1, 100, 50)
      )
    )
  )
)

my.func <- function(X){
  df1 = data.frame(value1=X*X, value2=sqrt(X))
  return(df1)
}

server <- function(input, output) {

  output$df1 <- renderTable({
    my.func(input$slider)
  })
}

shinyApp(ui, server)

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在服务器功能中准备输出,如下所示:

server <- function(input, output) {
    output$df1 <- renderUI({
        df <- my.func(input$slider)
        lapply(
            1:ncol(df),
            function(i) {
                force(i)
                p(paste("Value", i, "is", df[, i]))
            }
        )
    })
}

然后使用uiOutput('df1')在ui函数内部绑定。

或者,您可以使用observe块并将特定值分配给循环中的输出:

observe({
    df <- my.func(input$slider)
    for (i in 1:ncol(df)) {
        output[[paste0('value', i)]] <- renderText({ df[, i] }) 
    }
})

然后,你可以在ui中使用textOutput,就像这样textOutput('value1')