knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
{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:
# Install released version from CRAN install.packages("shinysurveys") # Or, install the development version from GitHub remotes::install_github("jdtrat/shinysurveys") # Load package library(shinysurveys)
{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}.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.