Shiny Shinny:操纵全局变量以输入回Shinny
我制作了一款闪亮的应用程序,可以移除外围的实验文物:Shiny Shinny:操纵全局变量以输入回Shinny,shiny,global-variables,Shiny,Global Variables,我制作了一款闪亮的应用程序,可以移除外围的实验文物: df=data.frame(seq(-1000,1000), rnorm(2001)) #not real data ui <- basicPage( plotOutput("plot1", click = "plot_click", brush = "plot_brush"), verbatimTextOutput("info"), plotOutput("tab") ) server <- function(i
df=data.frame(seq(-1000,1000), rnorm(2001)) #not real data
ui <- basicPage(
plotOutput("plot1", click = "plot_click", brush = "plot_brush"),
verbatimTextOutput("info"),
plotOutput("tab")
)
server <- function(input, output) {
output$plot1 <- renderPlot({
plot(df[,1], df[,2])
})
data_new<-eventReactive(input$plot_brush,{
da=df
rowmin <- which(da[,1] == round(as.numeric(input$plot_brush$xmin)))
rowmax <- which(da[,1] == round(as.numeric(input$plot_brush$xmax)))
da[rowmin:rowmax,2] = mean(da[,2])
da=isolate(da)
#writeToDatabase(da)
})
#output$zoom<-renderable({plot(data_new()[,1], data_new()[,2])})
output$tab=renderPlot({plot(data_new()[,1], data_new()[,2])})
}
shinyApp(ui, server)
这是一个初步测试,看看是否可以动态更新变量。所有这些都是为了能够连续查看和消除上面显示的我的数据中的每个尖锐错误峰值,而不是每次都在同一个不可变(从shiny的角度)变量上重新运行代码???您可能想使用
reactiveValues
:
server <- function(input, output) {
my <- reactiveValues(df=data.frame(seq(-1000,1000), rnorm(2001))) # Initialize df
output$plot1 <- renderPlot({plot(my$df[,1], my$df[,2])})
observeEvent(input$plot_brush,{
rowmin <- which(my$df[,1] == round(as.numeric(input$plot_brush$xmin)))
rowmax <- which(my$df[,1] == round(as.numeric(input$plot_brush$xmax)))
my$df[rowmin:rowmax,2] <- mean(my$df[,2]) # Update df
})
}
服务器
Listening on http://127.0.0.1:6183
Warning: Error in change: unused argument (df)
Stack trace (innermost first):
52: change
51: is.data.frame
50: write.table
43: isolate
42: server [/Users/Downloads/test.R#20]
1: runApp
Error in change(df) : unused argument (df)
server <- function(input, output) {
my <- reactiveValues(df=data.frame(seq(-1000,1000), rnorm(2001))) # Initialize df
output$plot1 <- renderPlot({plot(my$df[,1], my$df[,2])})
observeEvent(input$plot_brush,{
rowmin <- which(my$df[,1] == round(as.numeric(input$plot_brush$xmin)))
rowmax <- which(my$df[,1] == round(as.numeric(input$plot_brush$xmax)))
my$df[rowmin:rowmax,2] <- mean(my$df[,2]) # Update df
})
}