R Shiny 튜토리얼 : 알아야 할 모든 것



이 R Shiny 튜토리얼은 R Shiny에 대한 상세하고 포괄적 인 지식과 대화 형 웹 애플리케이션을 만드는 방법을 제공합니다.

기술이 발전함에 따라 실시간 통계,지도 및 그래프를 표시하는 웹 애플리케이션을 구축하기위한 새로운 도구와 프레임 워크가 등장했습니다. 이러한 기능에는 높은 처리 및 동기화가 필요하기 때문에 프로그래밍 언어를 사용하여 서버로드 시간을 줄입니다. 이 R Shiny 튜토리얼에서는 동적 웹 애플리케이션에서 R을 최대한 활용하는 방법을 설명합니다.

우리는 다음 주제를 다루고 이해할 것입니다.





R Shiny는 무엇입니까?

Shiny는 사용자가 대화 형 웹 앱을 빌드 할 수있는 R 패키지입니다. 이 도구는 Shiny 코드에서 HTML에 해당하는 웹 앱을 만듭니다. 네이티브 HTML 및 CSS 코드를 R Shiny 기능과 통합하여 애플리케이션을 표시 가능하게 만듭니다. Shiny는 R의 계산 능력과 현대 웹의 상호 작용을 결합합니다.Shiny는 서버 또는 R Shiny의 호스팅 서비스를 사용하여 웹에 배포되는 웹 앱을 만듭니다.

R Shiny의 특징 :

  • 웹 도구에 대한 기본 지식이나 지식 없이도 쉬운 애플리케이션 생성
  • Shiny를 기본 웹 도구와 통합하여 유연성과 생산성 향상
  • 사전 구축 된 I / O 및 렌더링 기능
  • 여러 번 다시로드하지 않고도 애플리케이션 콘텐츠를 쉽게 렌더링
  • R 스크립트에서 계산 된 (또는 처리 된) 출력을 추가하는 기능
  • 라이브 보고서 및 시각화를 추가합니다.

그것은 우리에게 질문을 던집니다.



Shiny는 기존 애플리케이션과 어떻게 다릅니 까?

날씨 애플리케이션의 예를 들어 보겠습니다. 사용자가 페이지를 새로 고침 /로드하거나 입력을 변경할 때마다 JS를 사용하여 전체 페이지 또는 페이지의 일부를 업데이트해야합니다. 이것은 처리를 위해 서버 측에로드를 추가합니다. Shiny를 사용하면 사용자가 앱에서 요소를 분리하거나 렌더링 (또는 다시로드)하여 서버로드를 줄일 수 있습니다. 페이지 스크롤은 기존 웹 애플리케이션에서는 쉬웠지만 Shiny 앱에서는 어려웠습니다. 코드의 구조는 코드를 이해하고 디버깅하는 데 중요한 역할을합니다. 이 기능은 다른 응용 프로그램과 관련하여 빛나는 응용 프로그램에 중요합니다.

R Shiny 튜토리얼의 다음 주제로 이동하여 R Shiny 패키지를 설치합니다.

R Shiny 설치

Shiny를 설치하는 것은 R에 다른 패키지를 설치하는 것과 같습니다. R 콘솔 아래 명령을 실행하여 Shiny 패키지를 설치하십시오.



install.packages ( 'shiny')

R Shiny 설치-R Shiny 튜토리얼-Edureka

설치가 끝나면 Shiny 패키지를로드하여 Shiny 앱을 만듭니다.

도서관 (반짝이)

이 R 반짝이 튜토리얼에서 더 나아 가기 전에 Shiny 애플리케이션의 구조를보고 이해해 보겠습니다.

Shiny 앱의 구조

Shiny는 3 가지 구성 요소로 구성됩니다.

  1. 사용자 인터페이스
  2. 섬기는 사람
  3. ShinyApp

하나.사용자 인터페이스 기능

사용자 인터페이스 (UI) 함수는 앱의 레이아웃과 모양을 정의합니다. 앱 내에서 CSS 및 HTML 태그를 추가하여 앱을 더보기 좋게 만들 수 있습니다. 이 함수에는 앱에 표시 할 모든 입력 및 출력이 포함됩니다. 앱 내부의 각 요소 (디비전 또는 탭 또는 메뉴)는 함수를 사용하여 정의됩니다. HTML 요소와 같은 고유 한 ID를 사용하여 액세스합니다.다양한앱에서 사용되는 기능.

반짝이는 레이아웃 기능

  • headerPanel ()앱에 제목을 추가합니다. titlePanel () 앱의 부제목을 정의합니다. 더 나은 이해를 위해 아래 이미지를 참조하십시오 headerPaneltitlePanel .
  • SidebarLayout ()보유 할 레이아웃을 정의 sidebarPanel mainPanel 집단. 레이아웃은 앱 화면을 사이드 바 패널과 메인 패널로 나눕니다.. 예를 들어, 아래 이미지에서 빨간색 직사각형은 mainPanel 영역과 세로로 검은 사각형 영역은 sidebarPanel 지역.

  • wellPanel ()동일한 그리드에 여러 개체 앱 입력 / 출력 개체를 보유하는 컨테이너를 정의합니다.
  • tabsetPanel ()탭을 보관할 컨테이너를 만듭니다. tabPanel () 탭 요소 및 구성 요소를 정의하여 앱에 탭을 추가합니다. 아래 이미지에서 검은 색직사각형은 tabsetPanel 개체와 빨간색 사각형은 tabPanel 목적.
  • navlistPanel ()다음과 유사한 다른 탭 패널에 대한 링크가있는 사이드 메뉴를 제공합니다. tabsetPanel () 화면 왼쪽에있는 세로 목록과 같습니다. 아래 이미지에서 검은 색 사각형은 navlistPanel 개체와 빨간색 사각형은 tabPanel 목적.

Shiny 레이아웃 기능과 함께 앱의 각 입력 위젯에 인라인 CSS를 추가 할 수도 있습니다.Shiny 앱은 웹 기술의 기능과 함께 반짝이는 R 기능 및 기능을 통합하여 앱을 풍부하게합니다. 다음을 사용하여 Shiny 앱 내에서 HTML 태그 사용 태그

레이아웃이 준비되었습니다. 이제 앱에 위젯을 추가 할 시간입니다. Shiny는 사용자 상호 작용을위한 다양한 사용자 입력 및 출력 요소를 제공합니다. 몇 가지 입력 및 출력 함수에 대해 설명하겠습니다.

반짝이는 입력 기능

각 입력 위젯에는 레이블, ID, 선택, 값, 선택, 최소, 최대 등과 같은 기타 매개 변수가 있습니다.

  • selectInput ()– 드롭 다운 HTML 요소를 만듭니다.
selectInput ( 'select', h3 ( 'Select box'), choices = list ( 'Choice 1'= 1, 'Choice 2'= 2, 'Choice 3'= 3), selected = 1)

  • numericInput ()– 숫자 또는 텍스트를 입력하기위한 입력 영역.
dateInput ( 'num', 'Date input', value = '2014-01-01') numericInput ( 'num', 'Numeric input', value = 1) textInput ( 'num', 'Numeric input', value = ' 텍스트 입력 ... ')

  • radioButtons ()– 사용자 입력을위한 라디오 버튼을 만듭니다.
radioButtons ( 'radio', h3 ( 'Radio buttons'), choices = list ( 'Choice 1'= 1, 'Choice 2'= 2, 'Choice 3'= 3), selected = 1)

빛나는 출력 기능

Shiny는 표시하는 다양한 출력 기능을 제공합니다. 아르 자형 플롯, 이미지, 표 등과 같은 출력은 해당 아르 자형 목적.

  • plotOutput ()– R 플롯 객체를 표시합니다.
plotOutput'top_batsman ')
  • tableOutput ()– 출력을 표로 표시합니다.
tableOutput'player_table ')

2. 서버 기능

섬기는 사람 기능 dShiny 앱의 서버 측 로직을 정의합니다. 다양한 종류의 출력을 생성하기 위해 입력을 사용하는 함수와 출력을 생성하는 것이 포함됩니다. 각 클라이언트 (웹 브라우저)는 Shiny 앱을 처음로드 할 때 서버 함수를 호출합니다. 각 출력은 렌더링 함수의 반환 값을 저장합니다.

이러한 함수는 R 표현식을 캡처하고 표현식에 대해 계산 및 사전 처리를 수행합니다. 정의중인 출력에 해당하는 render * 함수를 사용하십시오. 입력 위젯에 액세스합니다.사용 input $ [widget-id] . 이러한 입력 변수는 반응 값입니다. 입력 변수를 사용하여 생성 된 중간 변수는 다음을 사용하여 반응 적으로 만들어야합니다. 반응 형 ({}) . ()를 사용하여 변수에 액세스합니다.

세우다 * 함수는 서버 함수 내에서 계산을 수행하고 출력 변수에 저장합니다. 출력은 다음과 같이 저장해야합니다. output $ [출력 변수 이름] . 마다 세우다 * 함수는 단일 인수, 즉 중괄호 {}로 둘러싸인 R 표현식을 사용합니다.

3. ShinyApp Function

shinyApp ()기능은전화하는 앱 양파섬기는 사람 Shiny App을 만드는 기능.

아래 이미지는 Shiny 앱의 개요를 보여줍니다.

R Shiny 튜토리얼의 다음 부분으로 이동하여 첫 번째 R Shiny 앱을 만들어 보겠습니다.

Shiny 웹 프로젝트 만들기

이동 파일 및 만들기 새로운 과제 모든 디렉토리에서-> 빛나는 웹 애플리케이션 -> [샤이니 애플리케이션 디렉토리 이름]. 디렉토리 이름을 입력하고 확인 .

모든 새 Shiny 앱 프로젝트에는 반짝이는 앱의 기본 사항을 이해하는 히스토그램 예제가 포함됩니다. 히스토그램 앱에는 슬라이더와 슬라이더 변경에 대한 출력을 업데이트하는 히스토그램이 있습니다. 아래는 히스토그램 앱의 출력입니다.

Shiny 앱을 실행하려면 앱 실행 소스 창의 오른쪽 상단 모서리에있는 버튼. Shiny 앱은 빈 수를 입력으로 사용하고 입력에 따라 히스토그램을 렌더링하는 슬라이더 위젯을 표시합니다.

이제 구조와 Shiny 앱을 실행하는 방법을 이해했습니다. 첫 번째 Shiny App을 만들어 보겠습니다.

첫 번째 Shiny 앱 만들기

새 프로젝트를 만들거나 동일한 작업 디렉토리에서 계속할 수 있습니다. 이 R Shiny 튜토리얼에서는 IPL 통계를 보여주는 간단한 Shiny 앱을 만들 것입니다. 앱에서 사용되는 데이터 세트를 다운로드 할 수 있습니다. 여기 . 데이터 세트는 2 개의 파일로 구성됩니다. deliveryies.csv 각 공 (오버) 타자, 볼러, 런 세부 정보 및 matches.csv 파일에는 경기 위치, 던지기, 장소 및 게임 세부 정보와 같은 경기 세부 정보가 포함되어 있습니다. 아래 앱은 기본 지식이 필요합니다. dplyr 아래 튜토리얼을 이해하십시오.

아래 단계에 따라 첫 번째 반짝이는 앱을 만드십시오.

1 단계 : Shiny 앱의 개요를 만듭니다.

의 기능 정의를 제외한 기존 코드를 지 웁니다. . 아르 자형 파일.

2 단계 : 라이브러리 및 데이터를로드합니다.

이 단계에서는 필요한 패키지와 데이터를로드합니다. 그런 다음 추출 된 데이터를 정리하고 필요한 형식으로 변환합니다. 전에 아래 코드를 추가하십시오. 양파섬기는 사람 함수.

암호:

library (shiny) library (tidyverse) # 데이터 셋 로딩 --------------------------------------- ---------------- deliveryies = read.csv ( 'C : UsersCherukuri_SindhuDownloadsdeliveries.csv', stringsAsFactors = FALSE) match = read.csv ( 'C : UsersCherukuri_SindhuDownloadsmatches.csv', stringsAsFactors = FALSE) # 데이터 셋 정리 --------------------------------------------- --------- names (matches) [1] = 'match_id'IPL = dplyr :: inner_join (matches, deliveries)

설명 :

처음 2 개 라인로드 깔끔한빛나는 꾸러미. 다음 두 줄은 데이터 세트를로드하고 배달하고 일치하며 변수에 저장합니다.배달성냥. 마지막 두 줄은성냥내부 조인을 수행하기위한 데이터 세트배달표. 조인 결과를IPL변하기 쉬운.

3 단계 : Shiny 앱의 레이아웃 만들기 .

앞서 논의했듯이 양파 함수는 Shiny 앱에서 앱의 모양, 위젯 및 개체를 정의합니다.이에 대해 자세히 논의하겠습니다.

암호

양파<- fluidPage( headerPanel('IPL - Indian Premier League'), tabsetPanel( tabPanel(title = 'Season', mainPanel(width = 12,align = 'center', selectInput('season_year','Select Season',choices=unique(sort(matches$season, decreasing=TRUE)), selected = 2019), submitButton('Go'), tags$h3('Players table'), div(style = 'border:1px black solidwidth:50%',tableOutput('player_table')) )), tabPanel( title = 'Team Wins & Points', mainPanel(width = 12,align = 'center', tags$h3('Team Wins & Points'), div(style = 'float:leftwidth:36%',plotOutput('wins_bar_plot')), div(style = 'float:rightwidth:64%',plotOutput('points_bar_plot')) ) )))

그만큼 양파 함수에는 headerPanel () 또는 titlePanel () 그리고 tabsetPanel 앱에서 여러 탭을 정의합니다. tabPanel () 각 탭의 개체를 각각 정의합니다. 마다 tabPanel () 제목과 mainPanel (). mainPanel () 너비가 12 인 컨테이너, 즉 전체 창을 만들고 중앙에 입력 및 출력 개체를 정렬합니다.

설명

앱은 2 개의 탭으로 구성됩니다. 시즌팀 승리 및 포인트.

자바에서 스캐너 클래스 사용

시즌 탭 구성 selectInput ( ) , 제출 버튼 및 테이블. season_year는 l에서 입력을 읽는 데 사용됩니다.가치입니다. tableOutput () 서버 함수에서 계산 된 테이블 출력을 표시합니다.테이블 player_table은 다음 단계에서 논의 할 서버 기능에 정의 된 버튼 아래에 표시됩니다. 팀 승리 및 포인트 탭은 각 막대 차트에 팀별 승리와 점수를 표시합니다. plotOutput () 렌더링에서 반환 된 출력을 표시합니다. * 기능. 모든 출력, 입력 함수는 인라인 스타일을 추가하기 위해 div 태그로 묶여 있습니다.

이제 ui 기능에 익숙해 졌으므로 R Shiny 튜토리얼에서 서버 기능을 이해하고 사용하도록하겠습니다.

4 단계 : 서버 함수 문 추가

그만큼 섬기는 사람 기능은 기능과 출력을 생성하는 것을 포함합니다사용자 입력을 사용하여 다양한 종류의 출력을 생성하는 uts. 그만큼서버 기능은 아래에 단계별로 설명되어 있습니다.

match_year = react ({match %> % filter (season == input $ season_year)}) playoff = react ({nth (sort (matches_year () $ match_id, decreasing = TRUE), 4)}) matches_played = react ({matches_year () %> % filter (match_id % group_by (team1) %> % summarise (count = n ())}) t2 = react ({matches_played () %> % group_by (팀 2) %> % summarise (count = n () ))}) wl = react ({matchs_played () %> % filter (winner! = '') %> % group_by (winner) %> % summarise (no_of_wins = n ())}) wl1 = reactive ({matches_played ( ) %> % group_by (winner) %> % summarise (no_of_wins = n ())}) tied = react ({matchs_played () %> % filter (winner == '') %> % select (team1, team2)} ) playertable = react ({data.frame (Teams = t1 () $ team1, Played = t1 () $ count + t2 () $ count, Wins = wl () $ no_of_wins, Points = wl () $ no_of_wins * 2) })

위의 코드 필터는 매년 플레이 오프 전에 플레이 한 매치를 매치하고 그 결과를 매치 스 플레이 드 변수에 저장합니다.player_table테이블에는 팀별 경기 통계, 즉 플레이, 승리 및 점수가 포함됩니다. 변수match_played,player_table,t1,묶인등은 모두 중급 반응 값 . 이러한 변수는 위 코드에 표시된대로 ()를 사용하여 액세스해야합니다.player_tablerenderTable 함수를 사용하여 표시됩니다. 다음으로 플레이어 테이블을 저장할 출력 변수를 만듭니다.

output $ player_table = renderTable ({playertable ()})

이제 막대 차트를 만들어 시즌의 각 팀이 획득 한 승점과 점수를 보여 드리겠습니다. 아래 코드는 ggplot을 사용하여 막대 차트를 표시합니다. renderPlot () ggplot 객체를 가져오고 결과를 변수에 저장합니다.wins_bar_plotggplot 코드는 설명이 필요 없으며 범례, 레이블 및 플롯을 편집하기위한 기본 그래픽 및 매핑 기능이 포함됩니다.

output $ wins_bar_plot = renderPlot ({ggplot (wl1 () [2 : 9,], aes (winner, no_of_wins, fill = winner)) + geom_bar (stat = 'identity') + theme_classic () + xlab ( 'Teams') + ylab ( '승리 횟수') + theme (axis.text.x = element_text (color = 'white'), legend.position = 'none', axis.title = element_text (size = 14), plot.background = element_rect (colour = 'white')) + geom_text (aes (x = winner, (no_of_wins + 0.6), label = no_of_wins, size = 7))}) output $ points_bar_plot = renderPlot ({ggplot (playertable (), aes () Teams, Points, fill = Teams)) + geom_bar (stat = 'identity', size = 3) + theme_classic () + theme (axis.text.x = element_text (color = 'white'), legend.text = element_text ( size = 14), axis.title = element_text (size = 14)) + geom_text (aes (Teams, (Points + 1), label = Points, size = 7))})

5 단계 : Shiny 앱을 실행합니다.

앱 실행을 클릭하십시오. 성공적으로 실행하면 Shiny 앱이 아래와 같이 표시됩니다. 오류 또는 경고앱과 관련된 경우 R 콘솔에 표시됩니다.

Tab1 – 시즌

Tab2 – 팀 승리 및 점수

방법을 보자설정하기Shinyapps.io 계정을 사용하여 Shiny 앱을 배포하세요.

Shinyapps.io 계정 설정

이동 에스hinyapps.io 정보로 로그인 한 다음 페이지에 고유 한 계정 이름을 지정하고 저장하십시오. 성공적으로 저장하면 R 콘솔에서 앱을 배포하는 자세한 절차가 표시됩니다. Rstudio에서 계정을 구성하려면 아래 절차를 따르십시오.

1 단계. rsconnect 설치

install.packages ( 'rsconnect')

2 단계. 계정 승인

그만큼 rsconnect 패키지는 토큰과 암호를 사용하여 계정에 승인되어야합니다. 이렇게하려면 대시 보드 페이지에서 아래와 같이 전체 명령을 복사합니다. 아르 자형 콘솔. R에서 명령을 성공적으로 입력했으면 이제 Shinyapps.io 계정에 애플리케이션을 배포 할 수있는 권한을 부여합니다.

rsconnect :: setAccountInfo (name = 'account name', token = 'token', secret = 'secret')

3 단계. 앱 배포

아래 코드를 사용하여 Shiny 앱을 배포하세요.

라이브러리 (rsconnect) rsconnect :: deployApp ( 'path / to / your / app')

설정되면 반짝이는 앱을 배포 할 준비가 된 것입니다.

이제 Shiny 앱을 만들고 실행하는 방법을 배웠으므로 위에서 설명한대로 방금 만든 앱을 Shinyapps.io에 배포하거나 게시, Shiny 앱 창의 오른쪽 상단에 있습니다.

나는 희망이 R Shiny 튜토리얼은 Shiny 앱을 만들고 실행하는 방법을 배우는 데 도움이되었습니다. R Shiny를 사용하여 인터랙티브하고 아름다운 웹 앱을 재미있게 만드십시오.

R 프로그래밍을 배우고 데이터 분석에서 다채로운 경력을 쌓고 싶다면 강사 주도의 라이브 교육 및 실제 프로젝트 경험과 함께 제공됩니다. 이 교육은 데이터 분석을 이해하고 주제에 대한 숙달을 달성하는 데 도움이됩니다.