我有tagList
两个闪亮的输入,inputs
. 我想label
为每个输入提取标签。我希望htmltools
有一个 getter 函数来实现这一点,但在没有一个函数的情况下,我定义了一个函数 ,getLabel
它通过输入列表递归并提取其 name 元素等于 value 的子列表label
。这是我的代码:
library(htmltools)
library(shiny)
inputs = tagList(
selectInput('first', 'FIRST', letters),
checkboxInput(inputId = 'second', label = 'SECOND')
)
getLabel2 <- function(children) {
lapply(children, function(x) {
if(inherits(x, 'shiny.tag')) {
if(x$name == 'label') {
return(x)
} else {
chldn = x$children
if(is.list(chldn)) getLabel2(chldn)
}
}
})
}
getLabel <- function(inputs) {
lapply(inputs, function(x) {
if(grepl('shiny-input-container', tagGetAttribute(x, 'class'))) {
getLabel2(x$children)
} else {
return(x)
}
})
}
labels = getLabel(inputs)
问题是结果列表包含零长度子列表。我想要的输出是“闪亮标签”类的两个元素(每个输入的标签)的列表。我怎样才能修改我的功能来实现这一点?另外,这可以做htmltools
吗?我在包装手册中找不到任何相关的吸气剂。