グラフをクリックして悪いデータポイントを削除するR Shinyスクリプトを作成しています。R Shiny actionButtonでデータ制限を調整する
目的#1:ユーザーがactionButtonをクリックして「下に削除」し、グラフ上のポイントをクリックします。この点はyminであり、Rはそれより小さいyの値をすべて削除します。 "Remove" =はNAと宣言します。
目的2:逆に、ユーザーがアクションボタン「上の削除」をクリックし、グラフ上のポイントをクリックします。この点はymaxであり、Rはそれより大きいyの値をすべて削除します。ここで
は、コードの簡易版である:それはあなたが(あなたがそれを実行しても、複数回)を実行し、すべてのかどう
library(shiny)
x = seq(0,10,length=50)
y = sin(x)
picked.style = "color: white; background-color: black"
ui = fluidPage(
plotOutput("y.trimmed", click = "plot_click"),
actionButton(inputId="b.above.pushed", label="Delete Above"),
actionButton(inputId="b.below.pushed", label="Delete Below")
)
server = function(input, output) {
v <- reactiveValues(
ymin = min(y, na.rm=T),
ymax = max(y, na.rm=T),
pick.bottun = "none"
)
############ push a button
# pick above
observeEvent(input$b.above.pushed, {
v$pick.bottun <- "above"
observeEvent(input$plot_click,
{v$ymax = input$plot_click$y}, ignoreInit = TRUE)
})
# pick below
observeEvent(input$b.below.pushed, {
v$pick.bottun <- "below"
observeEvent(input$plot_click,
{ v$ymin <- input$plot_click$y}, ignoreInit = TRUE)
})
############# update and replot data
output$y.trimmed <- renderPlot({
# clean data
print(paste("ymin=",round(v$ymin), "ymax=",round(v$ymax)))
cc = y <= v$ymin & is.na(y)==F; y[cc] = NA
cc = y >= v$ymax & is.na(y)==F; y[cc] = NA
plot(x, y)
})
}
shinyApp(ui, server)
これまでのところ、それは客観#1のために正常に動作します。同様に、Objective#2でもうまく動作します。
yminを宣言してからymaxを宣言する場合に問題が発生します。 (ymin = 0.1と仮定しますが)ymaxを宣言する理由(仮説的にymax = 0.5)は、yminとymaxの両方を0.5に設定します。これにより、すべてのデータが削除され、コードがクラッシュします。最初にymaxを宣言してからyminを設定しようとすると、同じことが起こります。
ご協力いただきありがとうございます。
これは、radioButtonまたはselectInputで解決するのがはるかに簡単だと思いますが、2つのactionButtonsも同様に受け入れられますか? –
ありがとうございます。私は実際に両方のアプローチを採用しました(それぞれが私のアプリで便利です)。 – HSpeckman
回答が参考になった場合は、それらを受け入れてください、そして/またはupvoteしてください。これにより、将来の読者が探しているものを見つけやすくなります。 –