R Shiny: source command prints TRUE on app

Viewed 79

I am building a shiny application that should have different options for different user categories. Therefore, I have different subfiles where the inputs are definied and the dependent on the role the respective file is loaded via the source command.

It works, however, the source command always prints a TRUE on my shiny app. I can't get rid of it no matter what option of the source command I am trying.

Here a screenshot of the problem

And a minimal example: app.R

library(shiny)
library(ggplot2)

# Define UI for app that draws a histogram ----
ui <- fluidPage(
    titlePanel("Hello Shiny!"),
    sidebarLayout(
        sidebarPanel(
            source("sub.R", echo = FALSE, print.eval = FALSE),
        ),
        mainPanel(
            plotOutput(outputId = "distPlot")
        )
    )
)

server <- function(input, output) {
    output$distPlot <- renderPlot({
        x    <- faithful$waiting
        ggplot(tibble(x), aes(x=x)) + geom_histogram( binwidth = input$bins)
    })
}

shinyApp(ui = ui, server = server)

And the sourced file sub.R:

sliderInput(inputId = "bins",
            label = "Number of bins:",
            min = 0.1,
            max = 5,
            value = 1)

Thanks for any help in advance

1 Answers

I found the fix here: add a [1] at the end of the source(.) command:

library(shiny)
library(ggplot2)

# Define UI for app that draws a histogram ----
ui <- fluidPage(
    titlePanel("Hello Shiny!"),
    sidebarLayout(
        sidebarPanel(
            source("~/stackoverflow/17150062/sub.R", echo = FALSE, print.eval = FALSE)[1]
        ),
        mainPanel(
            plotOutput(outputId = "distPlot")
        )
    )
)

server <- function(input, output) {
    output$distPlot <- renderPlot({
        x    <- faithful$waiting
        ggplot(tibble(x), aes(x=x)) + geom_histogram( binwidth = input$bins)
    })
}

shinyApp(ui = ui, server = server)

enter image description here

Related