在shinyApp之后执行命令

时间:2015-03-18 07:17:48

标签: r shiny

我开始玩一点闪亮...

闪亮的应用程序关闭后是否有可能执行命令?

所以这是一个最小的例子:

library(dplyr)
library(ggvis)
library(shiny)
library(ggplot2)
df <- data.frame(x=rnorm(10), y=rnorm(10), id=letters[1:10])
server <- function(input, output) {
  movie_tooltip <- function(x) {
    x$id
  }
  vis <- reactive({
    df %>%
      ggvis(~x, ~y) %>% 
      layer_points(key := ~id)  %>%
      add_tooltip(movie_tooltip, "hover")
  })
  vis %>% bind_shiny("plot1")  
}
ui <- fluidPage(
  ggvisOutput("plot1")
)
shinyApp(ui = ui, server = server) 

ggplot(df, aes(x, y)) + geom_point()

我希望在关闭闪亮的应用程序后执行该ggplot命令。

1 个答案:

答案 0 :(得分:2)

正如hrbrmstr建议的那样,我将他的评论改编为我的例子。

library(dplyr)
library(ggvis)
library(shiny)
library(ggplot2)
df <- data.frame(x=rnorm(10), y=rnorm(10), id=letters[1:10])
server <- function(input, output) {
  movie_tooltip <- function(x) {
    x$id
  }
  vis <- reactive({
    df %>%
      ggvis(~x, ~y) %>% 
      layer_points(key := ~id)  %>%
      add_tooltip(movie_tooltip, "hover")
  })
  vis %>% bind_shiny("plot1") 
  observe({
    if(input$myBtn > 0){
      stopApp()
    }
  })
}
ui <- fluidPage(
  ggvisOutput("plot1"),
  actionButton("myBtn", "Press ME!")
)
shinyApp(ui = ui, server = server) 
ggplot(df, aes(x, y)) + geom_point()

这有时会产生错误Graphics error: Plot rendering error,但会创建图表...有时候根本不会创建图表。

我发现,在shinyApp命令之后也无法执行多项操作。

例如,如果我添加几个图,只有第一个(有时)创建

ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 1")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 2")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 3")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 4")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 5")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 6")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 7")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 8")
ggplot(df, aes(x, y)) + geom_point() + ggtitle("graph 9")