2017-10-23 11 views
0

데이터 가져 오기, 조작, 데이터 테이블 및 관련 플롯 생성과 관련된 Shiny 앱을 만들었습니다.R 마크 다운 보고서 Shiny app의 플롯 및 데이터 테이블 사용

저는 Rmarkdown (지금 막 사용하기 시작한)을 사용하여 다운로드 가능한 보고서를 작성하고 싶습니다. 그러나, 나는 반짝 이는 응용 프로그램에서 전체 R 코드를 복사하지 않고 Rmarkdown 스크립트에서 R로 생성 된 datatables 및 플롯을 인쇄하는 방법을 잘 모르겠습니다. 그것은 꽤 긴 코드 조각입니다. 그래서 출력물을 직접 사용할 수 있기를 바랍니다.

예를 들어, 다음과 같은 응용 프로그램을 복사하여 내 요점을 설명했습니다.

library(shiny) 

ui <- fluidPage(

    titlePanel("Old Faithful Geyser Data"), 

    sidebarLayout(
     sidebarPanel(
     sliderInput("bins", 
        "Number of bins:", 
        min = 1, 
        max = 50, 
        value = 30) 
    ), 

     mainPanel(
     plotOutput("distPlot"), 
     dataTableOutput("summary_table"), 
     downloadButton("report", "Generate report") 
    ) 

    ) 
) 

server <- function(input, output) { 

    output$distPlot <- renderPlot({ 
     x <- faithful[, 2] 
     bins <- seq(min(x), max(x), length.out = input$bins + 1) 

     hist(x, breaks = bins, col = 'darkgray', border = 'white') 
    }) 

    output$summary_table <- renderDataTable({ 
    x <- faithful 
    head(x,5) 
    }) 

    output$report <- downloadHandler(
    filename = "report.html", 
    content = function(file) { 
     tempReport <- file.path(tempdir(), "report.Rmd") 
     file.copy("report.Rmd", tempReport, overwrite = TRUE) 
     rmarkdown::render(tempReport, output_file = file, 
         envir = new.env(parent = globalenv()) 
     ) 
    } 
    ) 
} 

shinyApp(ui = ui, server = server) 

내 다운로드 가능한 R 마크 다운 파일의 플롯 및 데이터 테이블에 액세스하고 싶습니다. app.R 에 app.R 및

test.Rmd

를 사용

답변

1

내 접근 방식은, 플롯/차트 (자신의 음모로 대체)을 포함, 반응성 변수를 만들 수 있습니다.

chart1 <- reactive({ 
    ggmap(get_map(location = "Netherlands", 
       zoom = 7, 
       scale = 2, 
       color="bw", 
       language = "nl-NL")) 
    }) 

다음의 가격 인하를 호출 다음 .Rmd 파일에

output$report <- downloadHandler(
filename = "test.pdf", 

content = function(file) { 
    src <- normalizePath('test.Rmd') 

    #switch to system tempdir 
    #just in case the app doesn't have write persission in the current folder 
    owd <- setwd(tempdir()) 
    on.exit(setwd(owd)) 
    file.copy(src, 'test.Rmd', overwrite = TRUE) 

    out <- render("test.Rmd", "pdf_document") 
    file.rename(out, file) 
} 

)

를, 당신은 다음 차트에서 호출 할 수 있습니다

plot(chart1()) 

참고() chart1 후!

는 테이블

+0

가 내 음모를 꾸미고 코드가'renderPlotly' 기능에 싸여로, 위의 구현 수없는 것 당신이 당신의 인하에 포함 할 모든 다른 개체를 .. 동일한 구조를 따르십시오. 이런 종류의 출력을 추출 할 수 있습니까? – sym246

+0

잘 모르겠습니다. 음모에 대한 경험이 없습니다. – Wimpel