How does one use special symbols in a choices list as names?
之前已经讨论过如何在ui.R中使用希腊字母。例如,如果希望用户输入参数mu的数值,则可以使用:
1 | numericInput("mu",HTML(""),value=0) |
并显示。我想做同样的事情,但要在selectInput中使用选择列表。我试过了:
1 | selectInput("param", label ="Parameter",choices=c("" ="alpha","beta")) |
但这仅显示。我也尝试过:
1 | selectInput("param", label ="Parameter",choices=c(HTML("") ="alpha","beta")) |
和
1 | selectInput("param", label ="Parameter",choices=c("HTML("")" ="alpha","beta")) |
但是这些会产生错误。
不要使用HTML希腊字母,但是\\\\ uXXXX版本如下:
1 2 3 | selectInput("param", label ="Parameter",choices=c("\\u03B1" ="alpha", "\\u03B2" ="beta", "\\u03BC"="mu")) |
以下是\\\\ uXXXX的希腊字母表格:http://www.javascripter.net/faq/greekletters.htm
编辑:
OP是正确的,由于某种奇怪的原因,它不适用于Chi和许多其他字母,但是如果您在较早的步骤中为选择创建命名矢量,则其工作原理如下:
1 2 3 | choices <- c("alpha","beta","mu","chi") names(choices) <- c("\\u03B1","\\u03B2","\\u03BC","\\u03C7") selectInput("param","Parameters",choices=choices) |
edit2:
R和unicode仍然很奇怪,但是我已经很接近您想要的了。我在R中找不到适用于下标k的unicode,但我找到了下标i,所以如果您愿意使用其他下标:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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显然不是一件容易的事:如何在包含HTML实体(-...)的JavaScript中动态创建
我能够在下拉菜单中呈现HTML,但无法显示所选项目。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | library(shiny) ui <- shinyUI(fluidPage( mainPanel( selectizeInput("test","test",choices=c("χ2<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,但是我在任何地方都没有看到它,因此我仍然持怀疑态度。
看卡尔的答案,并看一下selectizejs自述文件
有可以设置用于渲染的字段列表。
使用"选项"(所有项目列表中的项目)和"项目"(所选项目),我能够提出以下解决方案,该解决方案将正确呈现所选输入以及下拉列表中的输入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | library(shiny) ui <- shinyUI(fluidPage( mainPanel( selectizeInput("test","test",choices=c("χ2<sub>k</sub>"="chi_k^2"),options=list( labelField="name", create=FALSE, render=I( ' { option:function(item,escape) {return String.prototype.concat("", item.name,""}, item:function(item,escape) {return String.prototype.concat("", item.name,""} } ' ) ) ) ) ) ) server <- shinyServer(function(input, output) { }) shinyApp(ui = ui, server = server) |