はじめに
- Shinyでアプリケーションを作っていると、2つのInputから1つの同じアウトプット先を変更したいことがあります
- 例:2つのインプットから、同じテキストレンダリングの値を変えたいなど
- ちなみに、1つのアウトプットから、2つのOutputを変えるのは、
reactive()を使うなどで簡単にできる - 正しいやり方なのかは不明ですが、動いたものを共有します
コードの例
server.R
# 2つのobserve()
observe({
input$date
output$create_date <- renderText({
paste0(" 作成日:", format(isolate(input$date),"%Y/%m/%d"))
})
})
observe({
input$date_slider
output$create_date <- renderText({
paste0(" 作成日:", format(isolate(input$date_slider),"%Y/%m/%d"))
})
})
ui.R
# Input 選択が2つ
dateInput('date',
label = '日付選択:',
value = Sys.Date() - 1
),
sliderInput(inputId="date_slider",
label="日付アニメーション選択:",
min=Sys.Date() - 7,
max=Sys.Date(),
value=Sys.Date(),
step = 1,
animate=animationOptions(interval=1500, loop=T),
timeFormat = "%F"
)
<snip>
# Output 先
textOutput("create_date")
解説
-
observeで2つのInputに変更があるかを確認するようになる -
isolateで囲まれているInputに変更がなければ実行されない