" />
class: center, middle, inverse, title-slide # 메타분석 웹 개발 후기 ##
Shinykorea 밋업
### 김진섭;
<i class="fab fa-github faa-float animated "></i>jinseob2kim
### 차라투 ### 2020-08-28 --- layout: true <div class="my-footer"><span><a href="https://www.zarathu.com">Zarathu Co.,Ltd</a>                             <a href="https://github.com/jinseob2kim">김진섭</a></span></div> --- # Executive Summary .large[ **메타분석**은 여러 연구결과를 합쳐서 보여주는 분석, [meta](https://cran.r-project.org/package=meta) 패키지를 ShinyApps 로 구현하였다. - [rhandsontable](https://cran.r-project.org/package=rhandsontable) 로 연구결과를 직접 입력한다. - 서버에 한글폰트 설치 후 [showtext](https://cran.r-project.org/package=showtext) 로 불러와 한글깨짐을 해결한다. - [colourpicker](https://cran.r-project.org/package=colourpicker) 로 글자색 조절한다. - **EMF** 포맷 다운로드를 지원, PPT에서 직접 그림수정할 수 있다. ] --- # 메타분석 ![](https://mblogthumb-phinf.pstatic.net/MjAxODA1MzBfODQg/MDAxNTI3NjQzNjg1NjA2.3oQ6vLm7d0yML0q5ohLvSV1uYobZ-eNVmPp_jVMM8Bog.L5XPNwr9Z_GtTnYC4qdnF_zeCdY20Ok4-JPPysM2F70g.JPEG.ecotogether/4metaanalysishoriz.jpg?type=w800) [Doing Meta Analysis in R](https://bookdown.org/MathiasHarrer/Doing_Meta_Analysis_in_R/) 책 추천 --- # My ShinyApps [![](https://blog.zarathu.com/posts/2020-08-22-meta-analysis-shiny/meta.png)](http://app.zarathu.com/meta-analysis) --- # 테이블입력: [rhandsontable](https://cran.r-project.org/package=rhandsontable) .large[ **csv** 다운로드, **행/열 추가**도 가능. - 메타분석웹은 행추가 옵션만 추가했음 (default) ] ```r library(shiny) ui = fluidPage( selectInput("inputtype", "Input type", c("Measure & 95% CI", "Event & N", "Mean & S.D")), * rHandsontableOutput("hot"), DT::DToutput("table") ) ) ``` --- ```r # In server output$hot <- renderRHandsontable({ DF <- switch(input$inputtype, "Measure & 95% CI" = data.default, "Event & N" = data.bin, "Mean & S.D" = data.cont ) rhandsontable(DF, stretchH = "all") %>% hot_context_menu( customOpts = list( csv = list(name = "Download to CSV", callback = htmlwidgets::JS( "function (key, options) { var csv = csvString(this, sep=',', dec='.'); var link = document.createElement('a'); link.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(csv)); link.setAttribute('download', 'data.csv'); document.body.appendChild(link); link.click(); document.body.removeChild(link); }")))) }) ``` --- # 저장 .large[ `hot_to_r` 함수 이용 **data.frame**으로 저장. ] ```r output$table <- DT::renderDT({ * DF <- hot_to_r(input$hot) datatable(DF) }) ``` --- # 한글깨짐: [showtext](https://cran.r-project.org/package=showtext) 나눔폰트: 우분투 기준 `/usr/share/fonts/truetype/nanum/` 에 저장됨. ```sh sudo apt-get install fonts-nanum-coding ``` `app.R` 시작부분에 아래 코드 실행 ```r library(showtext) showtext_opts(dpi = 90) ## 작을수록 글씨 커짐 font_add("NanumGothic", "/usr/share/fonts/truetype/nanum/NanumGothic.ttf") showtext_auto() ``` --- # [colourpicker](https://github.com/daattali/colourpicker) - color UI ```r library(shiny) shinyApp( ui = fluidPage( * colourpicker::colourInput("col", "Select colour", "purple", palette = "limited"), plotOutput("plot") ), server = function(input, output) { output$plot <- renderPlot({ set.seed(1) plot(rnorm(50), bg = input$col, col = input$col, pch = 21) }) } ) ``` ![](https://raw.githubusercontent.com/jinseob2kim/PresentationShinyMed/master/docs/qgraph.png) --- # EMF [devEMF](https://cran.r-project.org/package=devEMF) 패키지 이용, `emfPlus` 는 투명지원기능인데 **F** 가 안전. ```r *devEMF::emf("plot.emf", width = 7, height = 7, emfPlus = F) ggplot(mtcars, aes(mpg, cyl)) + geom_point() dev.off() ``` <img src="https://raw.githubusercontent.com/jinseob2kim/PresentationShinyMed/master/docs/zzz.png" width="70%" style="display: block; margin: auto;" /> --- # Executive Summary .large[ **메타분석**은 여러 연구결과를 합쳐서 보여주는 분석, [meta](https://cran.r-project.org/package=meta) 패키지를 ShinyApps 로 구현하였다. - [rhandsontable](https://cran.r-project.org/package=rhandsontable) 로 연구결과를 직접 입력한다. - 서버에 한글폰트 설치 후 [showtext](https://cran.r-project.org/package=showtext) 로 불러와 한글깨짐을 해결한다. - [colourpicker](https://cran.r-project.org/package=colourpicker) 로 글자색 조절한다. - **EMF** 포맷 다운로드를 지원, PPT에서 직접 그림수정할 수 있다. ] --- class: center, middle # END