r-根据单选按钮输入执行observeEvent



我刚开始学习R为我的论文编写实验程序,所以很抱歉提前问了一些可能是超基础的问题。

我想建立一个由多页组成的调查(德语(。在受访者开始之前,他们必须通过单选按钮("Einwilligung")表示同意。我希望他们只有在同意("Ich stimme zu")的情况下才能进入下一页。

凭直觉我会想到类似的东西

if (input$Einwilligung == "Ich stimme zu"),但我不知道如何包含它。

请在下面找到我想出的代码。谢谢你的帮助。

library(shiny)
ui <- (htmlOutput("page"))
###intro
intro <- function(...) {
div(class = 'container', id = "intro",
div(class = 'col-sm-2'),
div(class = 'col-sm-8',
h1("Startseite"),
p("Platzhalter"),
br(),
actionButton("Weiter1", "Weiter")
))

}
###declaration of consent
decl <- function(...) {
div(class = 'container', id = "decl",
div(class = 'col-sm-2'),
div(class = 'col-sm-8',
h1("Einwilligung zur Teilnahme"),
p("Platzhalter"),
br(),
radioButtons("Einwilligung",label = NULL, choices = c("Ich stimme zu","Ich stimme nicht zu")),
actionButton("Weiter2", "Weiter")
))

}
###explanation HSV
expl1 <- function(...) {
div(class = 'container', id = "expl1",
div(class = 'col-sm-2'),
div(class = 'col-sm-8',
h1("Einleitung Teil 1"),
p("Platzhalter"),
br(),
actionButton("Weiter3", "Weiter")
))

}
###outro
outro <- function(...) {
div(class = 'container', id = "outro",
div(class = 'col-sm-2'),
div(class = 'col-sm-8',
h1("Abschluss"),
p("Platzhalter"),
br(),
textInput("Email","Email"),
actionButton("Senden", "Senden")
))
}
render_page <- function(...,f, title = "Test") {
page <- f(...)
renderUI({
fluidPage(page, title = title)
})
}
server <- function(input, output){

output$page <- render_page(f = intro)

observeEvent(input$Weiter1, {
output$page <- render_page(f = decl)
})

observeEvent(input$Weiter2, {
output$page <- render_page(f = expl1)
})

observeEvent(input$Weiter3, {
output$page <- render_page(f = outro)
})
}

您可以在Weiter2:的observeEvent中添加检查条件

observeEvent(input$Weiter2, {
if (input$Einwilligung == "Ich stimme zu") output$page <- render_page(f = expl1)
})

也许添加一个else条件来做其他事情。

最新更新