R에서 Shiny를 사용하여 대화형 웹 앱을 구축하는 방법

Reseo Shinyleul Sayonghayeo Daehwahyeong Web Aeb Eul Guchughaneun Bangbeob



RStudio의 번들인 R Shiny 프레임워크 덕분에 R을 사용하여 동적 웹 앱을 만드는 것은 상대적으로 쉽습니다. Shiny의 장점은 R 코드를 웹에 게시할 수 있어 더 많은 사용자가 더 쉽게 액세스할 수 있다는 것입니다. R Shiny를 사용하면 사용자가 데이터 세트를 분석할 수 있는 매우 강력한 데이터 보고서와 시각적 개체를 만들 수 있습니다. Shiny 구성 요소와 함께 HTML 요소를 사용하여 프로그램 콘텐츠를 디자인할 수 있습니다. 오늘의 기사에서는 R의 Shiny 패키지를 사용하여 대화형 웹 애플리케이션을 구축하는 과정을 안내합니다. 이를 위해서는 “RStudio”가 이미 설치되어 있는지 확인하십시오.

RStudio에 Shiny 패키지 설치

RStudio 내에서 대화형 웹 애플리케이션을 만들기 전에 'Shiny' 패키지가 이미 설치되어 있어야 합니다. 이를 위해서는 RStudio의 '도구' 메뉴를 확장한 다음 '패키지 설치' 옵션을 확장해야 합니다. 열린 창 내에서 설치하려는 패키지(예: 'shiny')를 언급하고 '설치' 버튼을 탭해야 합니다. RStudio는 RStudio 콘솔에 빛나는 패키지를 설치합니다.







R에서 Shiny 시작하기

Shiny in R을 시작하려면 RStudio의 첫 번째 위치에 있는 “파일” 메뉴를 사용하여 새 R 파일을 만들어야 합니다. 그것을 확장하고 '새 파일' 옵션과 'R 스크립트' 옵션을 사용하십시오. '제목 없음' 스크립트 파일이 RStudio에서 열립니다. 원하는 위치에 'R' 파일로 이름을 바꾸세요.



이제 R에서 대화형 애플리케이션을 구축하는 데 필요한 필수 패키지를 로드합니다. 즉, R의 '라이브러리' 기능을 사용합니다. 'if' 문은 이전에 설치되지 않은 패키지를 설치하는 데 사용됩니다. Shiny 패키지는 일부 그래픽 시각화와 함께 웹 애플리케이션을 위한 대화형 인터페이스를 구축하는 데 사용됩니다. 'dplyr' 패키지는 몇 가지 유용한 기능을 활용하여 R에서 데이터 조작을 쉽게 하는 데 주로 사용됩니다.



마지막으로, 'ggplot2' 패키지는 강력한 맞춤형 그래프를 생성하여 데이터 시각화의 훌륭한 소스로 로드됩니다.





만약에 ( ! 요구네임스페이스 ( '빛나는' , 조용히 = 진실 ) ) {

설치하다. 패키지 ( '빛나는' )

}

만약에 ( ! 요구네임스페이스 ( 'dplyr' , 조용히 = 진실 ) ) {

설치하다. 패키지 ( 'dplyr' )

}

만약에 ( ! 요구네임스페이스 ( 'ggplot2' , 조용히 = 진실 ) ) {

설치하다. 패키지 ( 'ggplot2' )

}

도서관 ( 빛나는 )

도서관 ( dplyr )

도서관 ( ggplot2 )

대화형 시험 채점 시스템 구축

이 튜토리얼에서는 학생들이 100점 만점에 얻은 점수를 통해 달성한 성적을 얻을 수 있는 '시험 채점 시스템'을 만들 것입니다. 제공된 스크립트는 디자인과 모양을 지정하는 Shiny 앱의 'ui' 구성 요소입니다. 프로그램. 이 프로그램은 브라우저 창에 맞게 크기를 조정할 수 있는 적응형 디자인인 FluidPage를 생성합니다.

'titlePanel' 및 'sidebarLayout'은 'fluidPage'의 자손입니다. 프로그램의 '시험 채점 시스템' 제목은 'titlePanel'에 표시되는 전부입니다. 'sidebarPanel'과 'mainPanel'은 'sidebarLayout'이 애플리케이션을 분할하는 데 사용하는 두 섹션입니다. 'sidebarPanel'에는 'score'라는 'textAreaInput'과 'calculate'라는 'actionButton'이라는 입력 쌍이 포함됩니다.



'textAreaInput'을 사용하여 각 학생에 대해 한 줄에 하나의 점수를 입력할 수 있습니다. “actionButton”을 사용하여 성적 평가를 시작할 수 있습니다. 'mainPanel'에는 'Result'라는 'tableOutput'과 'ResultGraph'라는 'plotOutput'이라는 한 쌍의 출력이 있습니다. 'tableOutput'과 'plotOutput' 모두 계산 결과를 그래프 형식으로 표시합니다.

UI <- 유동페이지 (

제목패널 ( '시험 채점 시스템' ) ,
사이드바레이아웃 (
사이드바패널 (
텍스트 영역 입력 ( '점수' , '학생 점수 입력(한 줄에 하나씩):' , '' ) ,
액션버튼 ( '계산하다' , '성적을 계산해보자' )
) ,
메인패널 (
테이블 출력 ( '결과' ) ,
플롯 출력 ( '결과 그래프' )
) ) )

서버 메소드는 애플리케이션의 서버측 로직을 설정합니다. 학생의 성적은 처음에 'data'라는 반응 변수에 저장됩니다. 이를 위해 R의 'observeEvent' 메서드로 'calculate' 버튼을 모니터링합니다. 버튼이 트리거된 후 코드는 처음에 텍스트 필드 입력에 입력된 값을 숫자 값으로 변환합니다.

각 점수 뒤에는 '\n'을 사용하여 줄바꿈을 사용하여 바로 다음 줄에 새 점수를 입력합니다. 이 방법은 찾은 점수를 '데이터' 변수에 배치합니다. 사용자가 점수를 입력하지 않은 경우 메서드는 오류 메시지를 표시합니다.

섬기는 사람 <- 기능 ( 입출력 ) {

데이터 <- 반응성 값 ( 없는 )

관찰이벤트 ( 입력$계산, {

점수 <- 처럼. 숫자 ( 목록에서 제외 ( strsplit ( 입력$점수, ' \N ' ) ) )

만약에 ( 길이 ( 점수 ) > 0 ) {

데이터 ( 점수 )

} 또 다른 {

데이터 ( 없는 )

showModal ( 모달대화상자 (

제목 = '오류' ,

'오류: 값을 추가하세요!' ,

쉬운닫기 = 진실

) )

}

} )

두 개의 출력, 'output$Result'와 'output$ResultGraph'가 지정되어 학생 점수와 달성 성적을 표시합니다. renderTable() 동적 메소드는 'output$Result'라는 라벨이 붙은 학생의 시험 점수와 성적에 대한 데이터 테이블을 생성합니다. 마찬가지로 반응형인 renderPlot() 메서드는 학생 성적에 대한 막대 그래프를 생성하고 이를 'output$ResultGraph' 출력에 유사하게 저장합니다.

따라서 입력 데이터가 업데이트될 때마다 검토됩니다. if (!is.null(data())) 표현식은 수신되는 데이터가 null인지 여부를 결정합니다. 비어 있지 않으면 'if' 문의 스크립트가 수행됩니다. 학생들의 점수 벡터가 입력 '데이터'를 구성합니다. 모든 학생은 case_when() 메소드를 사용하여 점수에 따라 성적을 받습니다. 학생 성적과 시험 점수가 포함된 데이터 프레임은 data.frame() 메서드를 사용하여 생성됩니다. 데이터 프레임에 '학생', '점수' 및 '학년' 열이 추가됩니다. 성적 분포는 table() 메서드를 사용하여 “GradeCount”라는 테이블에 컴파일됩니다.

출력$결과 <- 렌더 테이블 ( {

만약에 ( ! 이다. 없는 ( 데이터 ( ) ) ) {

성적 <- 케이스_언제 (

데이터 ( ) > 80 ~ 'ㅏ' ,

데이터 ( ) > 60 ~ '비' ,

데이터 ( ) > 40 ~ '씨' ,

데이터 ( ) > 30 ~ '디' ,

진실 ~ '에프'

)

데이터. 액자 ( 학생 = 1 : 길이 ( 데이터 ( ) ) , 점수 = 데이터 ( ) , 등급 = 성적 )

}

} )

출력$결과그래프 <- 렌더플롯 ( {

만약에 ( ! 이다. 없는 ( 데이터 ( ) ) ) {

성적 <- 케이스_언제 (

데이터 ( ) > 80 ~ 'ㅏ' ,

데이터 ( ) > 60 ~ '비' ,

데이터 ( ) > 40 ~ '씨' ,

데이터 ( ) > 30 ~ '디' ,

진실 ~ '에프'

)

GradeCount <- 테이블 ( 성적 )

막대 차트는 'ggplot2' 라이브러리를 사용하여 생성됩니다. Count(각 성적을 받은 총 학생 수)와 Grade 열이 DataFrame에 생성됩니다. geom_bar() 메소드를 사용하면 “x축”에 “Grade” 데이터가 있고 “y축”에 “Count” 데이터가 있는 막대 그래프가 생성됩니다. stat = 'identity' 옵션은 ggplot2에게 어떤 종류의 변환 없이 실제 데이터를 활용하도록 지시합니다. 제목, x축 레이블, y축 레이블은 모두 'labs' 메서드를 통해 추가됩니다. 막대의 색상은 scale_fill_manual() 메서드를 사용하여 할당됩니다. 불필요한 그리드 선과 오버레이 구성 요소는 theme_minimal() 메서드를 사용하여 제거됩니다. glitterApp(ui, server) 메서드는 앱을 빌드합니다.

ggplot ( 데이터 = 데이터. 액자 ( 등급 = 이름 ( GradeCount ) , 세다 = 처럼. 숫자 ( GradeCount ) ) ,
에이즈 ( 엑스 = 등급 및 = 계산, 채우기 = 등급 ) ) +
geom_bar ( 통계 = '신원' ) +
실험실 ( 제목 = '등급분배' ,
엑스 = '등급' ,
그리고 = '세다' ) +
scale_fill_manual ( 가치 = ( 'ㅏ' = '녹색' , '비' = '보라' , '씨' = '분홍색' ,
'디' = '주황색' , '에프' = '빨간색' ) ) +
테마_최소 ( )
}
} )
}
빛나는 앱 ( UI, 서버 )

이 코드를 실행하면 몇 가지 점수를 추가하고 '성적 계산하자' 버튼을 클릭하는 대화형 인터페이스가 표시됩니다.

학생 점수와 성적이 포함된 테이블이 표시되고, 이어서 다양한 색상의 성적 분포 막대 그래프가 표시됩니다.

결론

이 가이드에서는 RStudio를 통해 R 언어에서 Shiny 패키지 사용의 중요성을 설명합니다. 설명을 보완하기 위해 'Shiny' 패키지를 활용하여 R 코드에서 학생 채점 시스템을 위한 대화형 웹 애플리케이션을 구축했습니다.