tagList
2 つのシャイニー入力があります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)
問題は、結果のリストに長さゼロのサブリストが含まれることです。私の望む出力は、クラス「shiny-tag」の 2 つの要素 (各入力のラベル) のリストです。これを達成するために関数を変更するにはどうすればよいですか? また、これはで行うことができhtmltools
ますか? パッケージマニュアルに関連するゲッターが見つかりません。