【发布时间】:2018-01-29 11:38:40
【问题描述】:
一个奇怪的用例:我试图允许改变闪亮标签上的文本说明符,同时保持闪亮标签。
例如,这是我想要的输出:
library(htmltools)
library(rlang)
tags$a("boom")
#> <a>boom</a>
注意这是一个闪亮的标签:
class(tags$a("boom"))
#> [1] "shiny.tag"
我想要做的是能够改变分配给文本的 HTML 代码(例如,分配 h2 而不是 a。我想使用 NSE 执行此操作,并且需要输出保持shiny.tag,没有转换为字符(所以所有的粘贴技巧都出来了)。
这是我已经走了多远,但似乎无法让它发挥作用:
library(htmltools)
library(rlang)
textSorter <- function(c="a",text) {
c=enquo(c)
tags$p(UQE(c),text)
}
a <- textSorter(c = "h2",text="Success?")
a
#><p>
#> h2
#> Success?
#></p>
所以这很接近了...至少我可以将标签放入输出...但是有两个问题,很明显,h2 只是文本,而不是所需的包装函数(p),有趣的是:
class(a)
#>Error in tags$UQE(c) : attempt to apply non-function
输出神秘地没有类,但仍然以某种方式保留它的 NSE?
尝试将文本分类器直接推入 tags$ 参数会产生:
textSorter <- function(c="a(",text) {
c=enquo(c)
tags$UQE(c)(text)
}
textSorter(c = "h2",text="Success?")
}
#> Error in textSorter(c = "h2", text = "Success?") :
#> attempt to apply non-function
有什么建议吗?
【问题讨论】: