0

tagList2 つのシャイニー入力がありますinputslabel入力ごとにタグを抽出したいと思います。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ますか? パッケージマニュアルに関連するゲッターが見つかりません。

4

1 に答える 1