У меня есть tagList
из двух блестящих входов, inputs
.Я хотел бы извлечь тег label
для каждого ввода.Я надеялся, что htmltools
имел функцию-получатель для достижения этой цели, но в отсутствие таковой я определил функцию getLabel
, которая повторяется через список ввода и извлекает подсписки, элемент имени которых равен значению 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
?Я не могу найти подходящих получателей в руководстве к пакету.