2016-08-26 8 views
0

私はserver.Rで関数を呼び出して、返されたリストをグローバル環境に保存しようとしています。この関数はアクションボタンによって呼び出されます。次に、そのリストを使用して、リストに基づいて別のボタンによってトリガーされる別の関数を実行し、グラフをプロットします。Shinyの関数を呼び出してリターンリストを保存

shinyServer(function(input, output) { 

    v <- reactiveValues() 

    observeEvent(input$button1, { 
    v$button1 = TRUE 
    }) 

    savedlist <<- reactive({ 
    if (v$button1){ 
     return(savedlist <- f1(10) 
    } 
    }) 

output$plot <- renderPlot({ 
    f2(savedlist) 
}) 

}) 

f1 <- function(x){ 
    savedlist = list(xdata = 1:x, ydata = x:1) 
    names(savedlist) = c("xdata", "ydata") 
    return(savedlist) 
} 

f2 <- function(x){ 
    attach(savedlist) 
    plot(xdata, ydata) 
} 

が、私はそれを動作させることはできません...

ありがとう:ここでは、簡単なサンプルコードです。

+0

を試してみてください - ' – Batanichek

+0

が返信いただきありがとうございます({{ savedlist <<(五$ボタン1の場合)、F1(10) }})。それは私にエラーを与える: '警告:もしでエラーが発生しました: –

+0

は、デフォルト値' V <追加してみzero'引数が長さである - reactiveValues(ボタン1 = FALSE) ' – Batanichek

答えて

1

観察 `試してみてください。この

library(shiny) 
ui=shinyUI(fluidPage(

    actionButton("button1","button1"), 
    plotOutput("plot") 

)) 
f1 <- function(x){ 
    savedlist = list(xdata = 1:x, ydata = x:1) 
    names(savedlist) = c("xdata", "ydata") 
    return(savedlist) 
} 
f2 <- function(x){ # change a bit to use x as argument 
    plot(x$xdata, x$ydata) 
} 

server=shinyServer(function(input, output) { 

    v <- reactiveValues(button1=FALSE) 

    observeEvent(input$button1, { 
    v$button1 = TRUE 
    }) 

    observe({ 
    if (v$button1){ 
     savedlist <<- f1(10) 
    } 
    }) 

     output$plot <- renderPlot({ 
     if(v$button1){# plot only after button because before list dont exist 
     f2(savedlist) 
     } 
     }) 

}) 

shinyApp(ui,server) 
+1

ありがとうございました!それは今働く。あなたは天才です。 –

関連する問題