前面已经讨论了如何在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("χ<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,但是我在任何地方都没有看到它,因此我仍然持怀疑态度。