{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}.