Chapter 8 Shiny Apps
샤이니 앱에 대한 기초는 아래 동영상을 참고하세요, 그리고 dspubs.org 에서 기본 강의록 살펴 보시기 바랍니다.
리마인드를 위해서 기초에 대한 내용은 아래의 링크를 참고해 주세요 https://bookdown.org/jinhaslab/testing/shinyapps.html
8.1 구조
구조는 ui, server로 구성됩니다. ui는 웹이 보여줄 부분, server는 그것이 작동하는 부분입니다. 아래와 같은 구조입니다.
library(shiny)
runExample("01_hello")
가장 기본은 ui, server 로 이루어진 부분입니다.
library(shiny)
= fluidPage(
ui titlePanel("안녕하세요! 윤진하입니다."),
sidebarLayout(
sidebarPanel(),
mainPanel()
)
)= function(input, output){}
server shinyApp(ui = ui, server = server)
8.2 테이블 게시하기
이번에는 shinyserver에 테이블을 게시하도록 하겠습니다. 우선 필요한 자료인 IARC 테이블을 가져오겠습니다. IARC 테이블은 WHO 에서 정리한 발암물질 종류입니다.
dspubs.org/download 에서 IARC.xlsx 다운 받기
::odbcListDrivers()
odbc<- DBI::dbConnect(odbc::odbc(),
con Driver = "PostgreSQL Unicode",
Server = "localhost",
Database = "ocdm",
UID = "open_cdm",
PWD = "j2data2020",
#UID = rstudioapi::askForPassword("Database user"),
#PWD = rstudioapi::askForPassword("Database password"),
Port = 5432)
#wget https://dspubs.org/download/IARC.xlsx
= readxl::read_xlsx('IARC.xlsx')
iarc #write
dbSendQuery(con, "create schema cancer")
dbWriteTable(con, SQL("cancer.iarclist"), value = iarc)
사용할 데이터를 DB에 넣어 둡니다.
그리고 앱을 작성합니다. app.R
이라는 파일을 만들고 아래 library를 rstudio 에서 설치하고, 터미널에서 sudo -s
이후 R
을 실행한 다음 아래 library를 설치해 줍니다.
if(!require(shiny)) install.packages('shiny'); library(shiny);
if(!require(DBI)) install.packages('DBI'); library(DBI)
if(!require(odbc)) install.packages('odbc'); library(odbc)
if(!require(DT)) install.packages('DT'); library(DT)
이후 DB를 불러오고, ui
, server
를 통해 앱을 작성합니다.
if(!require(shiny)) install.packages('shiny'); library(shiny);
if(!require(shinydashboard)) install.packages('shinydashboard'); library(shinydashboard);
if(!require(shinyWidgets)) install.packages('shinyWidgets'); library(shinyWidgets)
if(!require(tidyverse)) install.packages('tidyverse'); library(tidyverse)
if(!require(readxl)) install.packages('readxl'); library(readxl)
if(!require(DBI)) install.packages('DBI'); library(DBI)
if(!require(odbc)) install.packages('odbc'); library(odbc)
if(!require(DT)) install.packages('DT'); library(DT)
#sudo -s
#R
# install all packages
::odbcListDrivers()
odbc<- DBI::dbConnect(odbc::odbc(),
con Driver = "PostgreSQL Unicode",
Server = "localhost",
Database = "ocdm",
UID = "open_cdm",
PWD = "j2data2020",
#UID = rstudioapi::askForPassword("Database user"),
#PWD = rstudioapi::askForPassword("Database password"),
Port = 5432)
= dbGetQuery(con, "select * from cancer.iarclist")
iarclist
<- basicPage(
ui h2("The mtcars data"),
::dataTableOutput("mytable")
DT
)
<- function(input, output) {
server $mytable = DT::renderDataTable({
output
iarclist
})
}
shinyApp(ui, server)
전체 폴더를 shiny-server
폴더에 복사해 줍니다.
cp -rf /home/dspub/project/iarc/ /srv/shiny-server/
이후 ip:3838/iarc
로 열리는지 확인하면 됩니다.
8.3 과제
보건학적으로 필요한 테이블을 게시하고 ip:3838/app폴더
명 으로 제출해주세요
8.4 Shiny Dashboard Tutorial
shiny를 이용해서 자가 건강 측정을 하는 app을 만들고 여기에 입력된 값을 저장하는 것을 실습하겠습니다. 이는 단계별로 동영상을 보시기 바랍니다. 최종 code는 아래에서 다운로드 받을 수 있습니다 . https://dspubs.org/download/location.zip
동영상 첫번째
동영상 두번째
동영상 세번째
동영상 네번째