{shinysurveys} provides easy-to-use, minimalistic code for creating and deploying surveys in R. It extends the {shiny} package and converts a table of questions into an interactive web-based application. Administering surveys with this package allows users to combine the computational tools of R with the interactivity of web applications. This helps bridge the gap between data collection and data analysis.
You can install {shinysurveys} via CRAN or GitHub and load it as follows:
{shinysurveys} exports two functions: surveyOutput()
and
renderSurvey()
. The former goes in the UI portion of a
Shiny app, and the latter goes in the server portion. To create a
survey, you can build a data frame with your questions. The following
columns are required.
numeric
, mc
for
multiple choice, text
, select
, and
y/n
for yes/no questions.A demo survey can be created as follows:
library(shiny)
library(shinysurveys)
df <- data.frame(question = "What is your favorite food?",
option = "Your Answer",
input_type = "text",
input_id = "favorite_food",
dependence = NA,
dependence_value = NA,
required = F)
ui <- fluidPage(
surveyOutput(df = df,
survey_title = "Hello, World!",
survey_description = "Welcome! This is a demo survey showing off the {shinysurveys} package.")
)
server <- function(input, output, session) {
renderSurvey()
observeEvent(input$submit, {
showModal(modalDialog(
title = "Congrats, you completed your first shinysurvey!",
"You can customize what actions happen when a user finishes a survey using input$submit."
))
})
}
shinyApp(ui, server)
In the browser, this looks like:
For a more in-depth explanation of {shinysurveys}, please see the vignette A survey of {shinysurveys}.