The following code is taken from the article "psychTestR - Ein R-Paket für (musik-) psychologische Tests und Fragebogeninventare" in "Musik und Internet. Musikalische Phänomene populärer Kulturen" (2022) by Nicolas Ruth & Peter Moormann. Feel free to copy and modify it according to your needs.
install.packages("devtools") devtools::install_github("pmcharrison/psychTestR") devtools::install_github("fmhoeger/psyquest")
# Laden der benötigten Pakete library(psychTestR) library(psyquest) library(shiny) # Codeblöcke save_time_started <- code_block(function(state, ...) { # Speichern der Startzeit set_global( # global für diesen Teilnehmer key = "time_started", value = Sys.time(), state = state # interne Statusvariable von psychTestR ) }) compute_time_taken <- code_block(function(state, ...) { # Berechnung und Ausgabe time_taken <- Sys.time() - get_global("time_started", state) # der Bearbeitungsdauer msg <- paste0( "So lange hast du den Fragebogen bearbeitet: ", format(time_taken, digits = 3) ) shiny::showNotification(msg) }) # Timeline aus Abbildung 1 timeline_abb_1 <- join( one_button_page( # Willkommensseite button_text = "Weiter", div( p("Willkommen zum", tags$strong("Musikfragebogen!")), p(tags$em("Wir wollen heute mehr über Musik in deinem Leben erfahren.")) ) ), text_input_page( # erste Frage (Instrument) label = "Instrument", prompt = "Welches Instrument spielst du?", button_text = "Weiter", on_complete = function(answer, state, ...) { set_global( key = "instrument", value = answer, # answer enthält immer die letzte Antwort state = state # interne Statusvariable von psychTestR ) } ), reactive_page(function(state, answer, ...) { # zweite Frage (Dauer) msg <- sprintf( "Wie lange spielst du schon %s?", get_global("instrument", state) # holt den aktuellen Wert aus state ) NAFC_page( label = "time_instrument", msg, c( "Ich habe erst angefangen.", "ein Monat bis ein halbes Jahr", "0,5 bis 1 Jahr" ) ) }) ) # verschiedene Pages zu einer Timeline durch join() bündeln timeline <- join( new_timeline( # Timeline für die Startzeit save_time_started, # Timelines brauchen ein Dictionary, das dict = psyquest::psyquest_dict # die internationalisierten Sprach- # bausteine enthält, hier nur ein Dummy. ), timeline_abb_1, # Timeline aus Abbildung 1 GMS(language = "de"), # Goldsmiths Musical Sophistication Index compute_time_taken, # Berechnung und Ausgabe Bearbeitungsdauer elt_save_results_to_disk(complete = TRUE), # Speicherung der Ergebnisse final_page("Vielen Dank!") # Abschlussseite ) # fertigen Fragebogen öffnen questionnaire <- make_test( timeline, opt = test_options( title = "Musikfragebogen", admin_password = "abc", languages = "de" ) ) shiny::runApp(questionnaire)
data <- purrr::map_dfr( list.files( "output/results", pattern = "*.rds", full.names = TRUE ), ~ as.data.frame(readRDS(.)) )
Of course, real psychTestR experiments tend to be much more complex! See Research examples for some example applications.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.