如何在选项列表中使用特殊符号作为名称?

时间:2016-08-19 13:14:25

标签: r shiny

以前在这里讨论了如何在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"))

但这会产生错误。

2 个答案:

答案 0 :(得分:3)

不要使用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)

EDIT2: R和unicode的事情仍然很奇怪,但我非常接近你想要的东西。我在R中找不到一个工作的unicode作为下标k,但我为下标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) {

    }
  )
)

EDIT3: 我仍然认为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,但我没有在任何地方看到它,所以我仍然持怀疑态度。

答案 1 :(得分:2)

看卡尔的答案,并调查selectizejs Readme 有可以设置用于渲染的字段列表。 使用“选项”(所有项目列表中的项目)和“项目”(所选项目),我能够提出以下解决方案,该解决方案将正确呈现所选输入以及下拉列表中的输入:

{
    "flavors": [
        {
            "name": "ti",
            "links": [
                {
                    "href": "",
                    "rel": "self"
                },
         
            ],
            "ram": 8192,
            "OS-FLV-DISABLEse,
      
        },
        {