2015-03-18 3 views
2

Я начал играть немного с блестящим ...Выполнить команду после shinyApp

Есть ли возможность выполнять команды после того, как блестящее приложение закрывается?

Так вот минимальный пример:

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 после закрытия блестящего приложения.

+2

ли http://stackoverflow.com/questions/27365575/how-to-exit-a-shiny -app-and-return-a-value help? (например, просто добавьте кнопку, которая выйдет против кнопки «Стоп» или значок закрытия окна) – hrbrmstr

+0

Спасибо, это уже помогает, но дайте мне «Ошибка графики: Ошибка рендеринга изображения», но дополнительно ** иногда ** показывает мне график Я ищу ... Не знаю, почему это не всегда работает и почему возникает ошибка. – drmariod

+2

Я могу воспроизвести указанную проблему, но только в RStudio (ggplot последовательно отображается в командной строке R.app или R). Вероятно, это ошибка RStudio и заслуживает внимания на https://support.rstudio.com – hrbrmstr

ответ

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") 
Смежные вопросы