Вы можете использовать кнопки действий, показать, скрыть от блестящего js и verbatimtextoutput, чтобы в вашем приложении отображался код для указания c вывода. Например:
library(shiny)
library(shinyjs)
asd <- function(a,b)
{
c <- a + b
return(c)
}
ui <- pageWithSidebar(
headerPanel("actionButton test"),
sidebarPanel(
numericInput("n", "N:", min = 0, max = 100, value = 50),
br(),
actionButton("goButton", "Go!"),
p("Click the button to update the value displayed in the main panel.")
),
mainPanel(
useShinyjs(),
tags$head(tags$style("
#nText {
color: #333;
background-color: #f5f5f5;
border-radius: 4px;');
}
pre {
font-size: 90%;
color: #c7254e;
border-radius: 4px;
}")),
verbatimTextOutput("nText"),
actionButton("showtextcode", "Show Code"),
verbatimTextOutput("textoutputcode"),
)
)
server <- function(input, output) {
# builds a reactive expression that only invalidates
# when the value of input$goButton becomes out of date
# (i.e., when the button is pressed)
shinyjs::hide("textoutputcode")
ntext <- eventReactive(input$goButton, {
input$n
})
output$nText <- renderText({
asd(2,3)
})
output$textoutputcode <- renderText({
"output$nText <- renderText({
asd(2,3)
})"
})
observeEvent(input$showtextcode, {
if(input$showtextcode %% 2) {
shinyjs::show("textoutputcode")
} else {
shinyjs::hide("textoutputcode")
}
})
}
shinyApp(ui, server)
Результат:
Если вы хотите показать все вашего кода для приложения, вы может создать отдельную вкладку, которая показывает полный код, помещая все в verbatimTextOutput. Однако то, что вы можете не означает, что вы должны . Например, если ваше блестящее приложение занимает 5000 строк, это немного глупо!
Было бы намного лучше просто включить ссылку на github в исходный код приложения, если пользователи заинтересованы, они могут просто перейти по ссылке. Помните, что блестящий предназначен для совместного использования интерактивного вывода, а не полного исходного кода.