2017-07-10 21 views
1

私は、ユーザが現在の作業領域を選択したディレクトリに保存することを許可します。私はそれを働かせることができません。現在の作業領域をRに保存する方法

以下は私のコードです。助言がありますか?前もって感謝します。

ui.R:

shinyUI(fluidPage(
    titlePanel("Save RData"), 
    sidebarLayout(
    sidebarPanel(
    ), 
    mainPanel(
     downloadButton('download_structure', "Save") 
    ) 
) 
)) 

server.R

shinyServer(function(input, output) { 

    output$download_structure <- downloadHandler(
    filename = function() {paste("Test.RData")}, 
    content = function(file) { 
     list = ls(all.names = TRUE) 
    } 
) 

}) 

EDIT:

Iはまた、以下のコードを試してみました。

入力$ RDdata_dir_saveとして「C:/ Users/MyName/Desktop /」または「C:// Users // MyName // Desktop //」を入力しました。両方とも動作していません。

本当にありがとうございます。私ui.Rの

スニペット:私のserver.Rの

textInput("RData_name_save", "RData name"), 
textInput("RData_dir_save", "Save directory"), 

スニペット:私はdirectoryInputを使用して、ユーザーからファイル名を取って回避策を試してみた

tempdir <- paste0(input$RData_dir_save,input$RData_name_save,'.RData"') 
save.image(file=eval(parse(text=tempdir)))   

答えて

0

。このソリューションでは、downloadHandlerの機能は使用されません。一時的な回避策です。 ディレクトリの選択については、としてdirectoryInputを使用しました。

ui.R

library(shiny) 

shinyUI(fluidPage(
    fluidRow(
    column(
     width = 10, 
     titlePanel("Save RData"), 
     directoryInput('directory', label = 'select directory'), 
     hr(), 
     textOutput("dir"), 
     textInput("file_name","give file name"), 
     actionButton("save","Save RData"), 
     conditionalPanel( 
     condition="output.saved!=0", 
     h4('Saved successfully') 
    ) 
    ) 
) 
)) 

注: actionButton後に表示されるconditionalPanelが次第としてsever.R

server.R

library(shiny) 

shinyServer(function(input, output, session) { 

    observeEvent(input$save,{ 
    SaveRData() 
    }) 

    observeEvent(
    ignoreNULL = TRUE, 
    eventExpr = { 
     input$directory 
    }, 
    handlerExpr = { 
     if (input$directory > 0) { 
     # condition prevents handler execution on initial app launch 

     path = choose.dir(default = readDirectoryInput(session, 'directory')) 
     updateDirectoryInput(session, 'directory', value = path) 
     } 
    } 
) 

    output$directory = renderText({ 
    readDirectoryInput(session, 'directory')}) 

    SaveRData <- reactive({ 
     if(!(is.null(dir) && is.null(input$save) && is.null(input$file_name))){ 
     dir <- readDirectoryInput(session, 'directory') 
     file_name <- paste(input$file_name,".RData", sep="") 
     save.image(file = paste(dir,file_name, sep = "\\")) 
     } 
    }) 

    output$saved<-reactive({input$save}) 

    outputOptions(output, 'saved', suspendWhenHidden = FALSE) 
    }) 

をの節約をトリガーボタンを押すと、基本的にsave.image(...)を使用してinputのパラメータを持つSaveRDataファンクションがトリガされます。

スナップショット: 1. UIsnap1-ui

2. 出力ディレクトリsnap2-folder

関連する問題