3

R Shiny で SelectInput 関数の動的入力を作成できるように、因子レベルの出力をリストに変換しようとしています。

基本的にCSVファイルをインポートし、CSVファイルの1列目の「カテゴリ」(レベル)を利用してSelectInputにドロップダウンリストを作成したいと考えています。

したがって、UI.RI には次のものがあります。

uiOutput("categoryPicker")

そしてserver.RIには次のものがあります:

datatwo <- read.csv(file="data2.csv",head=TRUE,sep=",")

次に、「shinyServer(function(input, output)」セクション (ちなみに、「category」は CSV ファイルのヘッダーです):

output$categoryPicker <- reactiveUI(function() {
categories <- levels(datatwo$category)
selectInput("category", "Category:", categories)
})

これは機能しません。次のエラーが表示されます。

選択肢[[choiceName]]のエラー:添え字が範囲外です

str(categories) の出力は次のとおりです。

chr [1:22] "" "Cat1" "Cat2" "Cat3" "Cat4" "Cat5" ...

「list(levels(datatwo$category)」を実行すると、str(categories) 出力全体であるドロップダウンが 1 つだけ表示されます。

1 $ のリスト : chr [1:22] "" "Cat1" "Cat2" "Cat3" ...

これを次の形式で取得しようとしています( str(x) が完了すると、出力は次のようになります):

Xのリスト
$ Cat1: chr "Cat1"
$ Cat2: chr "Cat2"
$ Cat3: chr "Cat3"
...

しかし、これを行う方法がわかりません。また、最初の項目が "" [空の文字列] である理由もわかりません。私はRとShinyにかなり慣れていないので、無知を許してください。しかし、どんな助けでも大歓迎です。

ところで、私はこのチュートリアルに取り組んできました: http://rstudio.github.com/shiny/tutorial/#dynamic-ui

ありがとう。

4

1 に答える 1

4

リスト内の名前が重要かどうかはわかりませんが、これで必要なものが得られるはずです。

setNames(as.list(categories), categories)
于 2013-01-15T22:45:55.913 に答える