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

Wol*_*lke 7 r shiny

以前在这里讨论过如何在ui.R中使用希腊字母.例如,如果想要用户输入参数mu的数值,可以使用:

numericInput("mu",HTML("μ"),value=0)  
Run Code Online (Sandbox Code Playgroud)

并显示μ.我想做同样的事情,但使用selectInput中的选择列表.我试过了:

selectInput("param", label = "Parameter",choices=c("α" = "alpha","beta"))
Run Code Online (Sandbox Code Playgroud)

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

selectInput("param", label = "Parameter",choices=c(HTML("α") = "alpha","beta"))
Run Code Online (Sandbox Code Playgroud)

selectInput("param", label = "Parameter",choices=c("HTML("α")" = "alpha","beta"))
Run Code Online (Sandbox Code Playgroud)

但这会产生错误.

Car*_*arl 5

不要使用 HTML 希腊字母,而使用 \\uXXXX 版本,如下所示:

\n\n
selectInput("param", label = "Parameter",choices=c("\\u03B1" = "alpha",\n                                                     "\\u03B2" = "beta",\n                                                     "\\u03BC"="mu"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

编辑:\nOP 是正确的,由于某些奇怪的原因,这不适用于 Chi 和许多其他字母,但是如果您在前面的步骤中为选择创建命名向量,它的工作方式如下:

\n\n
choices <- c("alpha","beta","mu","chi")\nnames(choices) <- c("\\u03B1","\\u03B2","\\u03BC","\\u03C7")\nselectInput("param","Parameters",choices=choices)\n
Run Code Online (Sandbox Code Playgroud)\n\n

edit2:\nR 和 unicode 的情况仍然很奇怪,但我非常接近你想要的。我在 R 中找不到下标 k 的有效 unicode,但我为下标 i 找到了,所以如果您愿意使用不同的下标:

\n\n
library(shiny)      \nchoices <- c("X^2_i")\nnames(choices) <- c("\\u03C7\\u1d62\\U00B2")\nrunApp(\n  list(\n    ui = fluidPage(\n      selectInput("param","Parameters",choices=choices)\n    ),\n    server = function(input, output, session) {\n\n    }\n  )\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

edit3:\n我仍然认为 Unicode 是最好的方法,因为在选择选项中包含 HTML 显然并不是微不足道的:How do Idynamic create an <option> in JavaScript that contains an HTMLEntity (\xe2\x80\x94 ... «)?

\n\n

我能够在下拉列表中呈现 HTML,但无法呈现所选项目。

\n\n
library(shiny)\nui <- shinyUI(fluidPage(\n  mainPanel(\n    selectizeInput("test","test",choices=c("&chi;<sup>2</sup><sub>k</sub>"="chi_k^2"),options=list(\n      labelField="name",\n      create=FALSE,\n      render=I(\n        "{option:function(item,escape) {\n          return item.name}}"\n      )\n    )\n    )\n  )\n)\n)\n\nserver <- shinyServer(function(input, output) {\n})\n\nshinyApp(ui = ui, server = server)\n
Run Code Online (Sandbox Code Playgroud)\n\n

可能有一种方法可以告诉 selectizejs 在所选框中渲染 html,但我还没有在任何地方看到它,所以我仍然持怀疑态度。

\n