私は簡単な練習をしています:x
はdata.frameの列です。私はx
の平均をプリントアウトするシャイニーアプリを作りたいと思う。 「2倍する」チェックボックスが選択されている場合は、x
に2を掛けます。そうでない場合は、古い値を使用します。変数をグローバルに変更しないでください
library(shiny)
dt <- data.frame(x = 1:10, y = rep(c(2,3),5))
ui <- fluidPage(
checkboxInput("myCheckbox", "multiple dt$x by 2"),
actionButton("myButton", "show result")
)
server <- function(input, output) {
i <- 0
observeEvent(input$myCheckbox,{ # if this checkbox is true then dt$x should be muiltiplied by 2
i <<- i + 1
if(i > 1){ # first call should not change dt$x
if(input$myCheckbox){
dt$x <<- dt$x * 2
}else{
dt$x <<- dt$x/2
}
}
})
observeEvent(input$myButton,{
showNotification(paste0("Mean of dt$x is equal ", mean(dt$x)), type="default")
})
}
shinyApp(ui, server)
<<-
を避けるにはどうすればよいですか?それは危険で、300行のコードを持つもっと大きなShinyアプリでは、Rがスコープを選択できないというエラーが表示されることがあります。
'dt $ x'に何度も乗算したいのですか?または2倍して元の値に戻すかどうかを切り替えるだけですか? –
を切り替えます。私のコードで見ているように。 –