如何在闪亮的其他文本中显示输入文本?
How to display input text inside some other text in shiny?
我有一个输入框,每当用户输入他的名字时,输出应该类似于 "hai mr.X, how are you?",其中 X 是输入。
这应该只出现在第一次输入之后,并且名称应该从 X 更改为基于之后输入的任何内容。
我的ui.R
和server.R
代码如下:
ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Employee Assesment"),
sidebarLayout(
sidebarPanel(
textInput("name","Enter your name","")),
mainPanel(("About this"),
textOutput("name")
)
)
))
server.R
library(shiny)
shinyServer(function(input, output) {
output$name <- renderText({input$name})
})
我认为这个问题需要解决几个问题。首先,您放置服务器逻辑的地方是服务器函数,这样它就可以驱动特定的输出。在renderText
函数中,可以放置任意类型的交互表达式。在您的情况下,这可能是
output$name <- renderText({
if(input$name != ""){
paste0("Oh hai Mr. ", input$name, ". How are you?"
}
})
同时,除了名称为空时不显示外,没有任何控制流程。相反,您可能需要考虑添加 submitButton
或 actionButton
以允许人们在完成输入后提交他们的姓名。
以下是您要包含的内容:
sidebarPanel(
textInput("name","Enter your name",""),
actionButton(inputId = "submit",label = "Submit")
)
要访问 actionButton 的控制流,您可以设置一个由事件触发的反应表达式。例如,我们将其命名为 "name."
name <- eventReactive(input$submit, {
if(input$name != ""){
paste0("Oh hai Mr. ", input$name, ". How are you?")
} else {
"Please write a name."
}
})
然后当我们想引用它时,我们可以在调用 output$name 时使用它,如下所示:
output$name <- renderText({
name()
})
这样,人们的名字只会在他们实际写下一个名字后出现,否则他们会收到一条错误消息,提示他们写一些东西。
我有一个输入框,每当用户输入他的名字时,输出应该类似于 "hai mr.X, how are you?",其中 X 是输入。 这应该只出现在第一次输入之后,并且名称应该从 X 更改为基于之后输入的任何内容。
我的ui.R
和server.R
代码如下:
ui.R
library(shiny)
shinyUI(fluidPage(
titlePanel("Employee Assesment"),
sidebarLayout(
sidebarPanel(
textInput("name","Enter your name","")),
mainPanel(("About this"),
textOutput("name")
)
)
))
server.R
library(shiny)
shinyServer(function(input, output) {
output$name <- renderText({input$name})
})
我认为这个问题需要解决几个问题。首先,您放置服务器逻辑的地方是服务器函数,这样它就可以驱动特定的输出。在renderText
函数中,可以放置任意类型的交互表达式。在您的情况下,这可能是
output$name <- renderText({
if(input$name != ""){
paste0("Oh hai Mr. ", input$name, ". How are you?"
}
})
同时,除了名称为空时不显示外,没有任何控制流程。相反,您可能需要考虑添加 submitButton
或 actionButton
以允许人们在完成输入后提交他们的姓名。
以下是您要包含的内容:
sidebarPanel(
textInput("name","Enter your name",""),
actionButton(inputId = "submit",label = "Submit")
)
要访问 actionButton 的控制流,您可以设置一个由事件触发的反应表达式。例如,我们将其命名为 "name."
name <- eventReactive(input$submit, {
if(input$name != ""){
paste0("Oh hai Mr. ", input$name, ". How are you?")
} else {
"Please write a name."
}
})
然后当我们想引用它时,我们可以在调用 output$name 时使用它,如下所示:
output$name <- renderText({
name()
})
这样,人们的名字只会在他们实际写下一个名字后出现,否则他们会收到一条错误消息,提示他们写一些东西。