前面已经讨论了如何在ui.R中使用希腊字母。例如,如果希望用户输入参数mu的数值,则可以使用:

numericInput("mu",HTML("μ"),value=0)


并且显示μ。我想做同样的事情,但是要在selectInput中使用选择列表。我努力了:

selectInput("param", label = "Parameter",choices=c("α" = "alpha","beta"))


但这只显示α。我也尝试过:

selectInput("param", label = "Parameter",choices=c(HTML("α") = "alpha","beta"))




selectInput("param", label = "Parameter",choices=c("HTML("α")" = "alpha","beta"))


但是这些会产生错误。

最佳答案

不要使用HTML希腊字母,而是使用\ uXXXX版本:

selectInput("param", label = "Parameter",choices=c("\u03B1" = "alpha",
                                                     "\u03B2" = "beta",
                                                     "\u03BC"="mu"))


这是\ uXXXX的希腊字母表:http://www.javascripter.net/faq/greekletters.htm

编辑:
OP是正确的,由于某种奇怪的原因,它不适用于Chi和许多其他字母,但是,如果您在较早的步骤中为选择创建命名向量,则其工作原理如下:

choices <- c("alpha","beta","mu","chi")
names(choices) <- c("\u03B1","\u03B2","\u03BC","\u03C7")
selectInput("param","Parameters",choices=choices)


编辑2:
R和unicode仍然很奇怪,但是我已经很接近您想要的了。我在R中找不到适用于下标k的unicode,但是我找到了下标i,因此,如果您愿意使用其他下标:

library(shiny)
choices <- c("X^2_i")
names(choices) <- c("\u03C7\u1d62\U00B2")
runApp(
  list(
    ui = fluidPage(
      selectInput("param","Parameters",choices=choices)
    ),
    server = function(input, output, session) {

    }
  )
)


编辑3:
我仍然认为Unicode是最好的方法,因为在选择选项中包括HTML显然并不容易:How do I dynamically create an <option> in JavaScript that contains an HTML entity (— ... «)?

我能够在下拉菜单中呈现HTML,但无法显示所选项目。

library(shiny)
ui <- shinyUI(fluidPage(
  mainPanel(
    selectizeInput("test","test",choices=c("&chi;<sup>2</sup><sub>k</sub>"="chi_k^2"),options=list(
      labelField="name",
      create=FALSE,
      render=I(
        "{option:function(item,escape) {
          return item.name}}"
      )
    )
    )
  )
)
)

server <- shinyServer(function(input, output) {
})

shinyApp(ui = ui, server = server)


也许有一种方法可以告诉selectizejs在选定框中呈现html,但是我在任何地方都没有看到它,因此我仍然持怀疑态度。

07-25 23:38