在 R Shiny 中,使用 textOutput 动态填充下载按钮的标签

问题描述

在 R Shiny 中,我尝试使用反应式渲染文本和文本输出动态设置下载按钮的标签。 它按预期工作,但标签始终显示在新行中,因此该按钮在常规按钮旁边看起来很古怪 as shown here

后端逻辑是-

在 server.R 中,输入字段的值用于生成条件标签

output$mycustomlabel  <- renderText({ if(input$inputtype=="One") return("Download label 1") else return("Download label 2")})

然后在 UI.R 中,该标签用作

downloadButton("download.button.test",textoutput("mycustomlabel"))

有人可以指导为什么它在新行上显示文本,以及如何将其保持在同一行上?

解决方法

如果您想更改按钮标签,您可能需要使用 javascript 对其进行更新。

一种更简单的方法是使用两个不同的按钮并使用条件面板来显示其中一个按钮:

ui <- fluidPage(
  radioButtons('inputtype','Set label',c('One','Two')),conditionalPanel(
    'input.inputtype == "One"',downloadButton('btn1','Download label 1')
  ),conditionalPanel(
    'input.inputtype == "Two"',downloadButton('btn2','Download label 2')
  )
)

请注意,使用这种方法,您需要在服务器功能中使用两个观察者。