私はマルチ条件フィルタのコードによってユーザー入力に依存する光沢のあるアプリケーションを作成しようとしています。したがって、「すべて」を選択するとすべてが表示され、選択した入力が他のものと等しい場合は、その入力のデータのみが表示されます。Shiny(R)で動的フィルタを作成する
if文は、dplyrフィルタにコードを挿入します。
サーバー
library(dplyr)
library(ggplot2)
library(shiny)
shinyServer(function(input, output) {
raw <- diamonds
output$cutlist <- renderUI({
cutlist <- sort(unique(as.vector(raw$cut)), decreasing = FALSE)
cutlist <- append(cutlist, "All", after = 0)
selectizeInput("cutchoose", "Cut:", cutlist)
})
output$colorlist <- renderUI({
colorlist <- sort(unique(as.vector(raw$color)), decreasing = FALSE)
colorlist <- append(colorlist, "All", 0)
selectizeInput("colorchoose", "color:", colorlist)
})
output$table <- renderDataTable({
if(input$colorchoose == "All") {
filt1 <- quote(color != "@?><")
} else {
filt1 <- quote(color == input$colorchoose)
}
if (input$cutchoose == "All") {
filt2 <- quote(cut != "@?><")
} else {
filt2 <- quote(cut == input$cutchoose)
}
raw %>%
filter_(filt1) %>%
filter_(filt2)
})
})
UI
shinyUI(fluidPage(
# Application title
titlePanel("Dynamic Filter Test App"),
sidebarLayout(
sidebarPanel(
uiOutput("cutlist"),
uiOutput("colorlist")
),
mainPanel(
dataTableOutput("table")
)
)
))
コンソール
Warning: Error in if: argument is of length zero
Stack trace (innermost first):
79: renderDataTable [D:\Independent Learning\R
code\dynamFilter/server.R#44]
78: func
77: origRenderFunc
76: output$table
1: runApp
こんにちはBertil、助けてくれてありがとうございましたが、これは私にとってはうまくいきませんでした – LeeRock
こんにちはbertil、私は別のデバイス上のコードを試して、それは動作します... .....ちょうど私がいるデバイスのようです... – LeeRock