많은 기본 단일 파일 앱은 다음과 같은 틀을 가지는데 , 처음 샤이니를 배울 때 이유를 불문하고 암기하면 좋을 것이다.
library(shiny)
ui <- fluidPage(
#입출력 위젯
)
server <- function(input,output,session){
#서버 코드
}
shinyApp(ui,server)
25- 2. 입력 위젯 함수
샤이니 입력 위젯은 사용자들이 입력하는 값을 장치로, R 함수로 구현되어 있다. 입력 위젯 함수들은 입력하는 값의 종류와 방법에 따라 여러 가지가 있는데, 공통적으로 다음과 같은 특징을 지닌다.
1. 샤이니 입력 위젯 함수들은 전부는 아니지만 대체로 textInput(0, numericInput(), dateInput(), fileInput() 등과 같이 Input으로 끝나는 이름을 가진다.
2.입력 위젯의 첫 번째 인자는 문자열로 제시되는 inputId 로, 이것을 '입력 아이디'라고 부른다. 입력 아이디는 샤이니의 반응성 체인에서 아주 중요한 역할을 한다. 반응성 체인은 명시적으로 입력 아이디에 의존한다.
3. 입력 위젯의 두 번째 인자는 레이블(label)로, 이것은 화면에 표시되는 입력 위젯의 제목이 된다.
4.입력 위젯 함수들의 세 번째 이후 인자들은 각 함수의 목적에 따라 다르다.
숫자를 입력하는 numericInput() 함수는 전형적인 예로 다음과 같은 형태로 사용한다.
numericInput("sel","값 입력",value =50, min=40, max=100)
25-3 반응성 맥락으로 통하는 문
샤이니의 반응성 모드는 '반응성 맥락'이라는 특수한 환경에서 실행된다. 샤이니의 반응성 맥락은 글로벌 환경(R 콘솔의 환경)이 아니라 새로운 함수의 실행 환경(execution environment)으로 이해해야 한다. R에서 함수 밖에서 함수 안의 변수에 접근할 수 없는 것과 같은 이치로, 글로벌 환경에서는 이 반응성 맥락의 값에 접근할 수 없다. R에서 함수 안에서 함수 밖의 변수에 접근할 수 있는 것과 같은 이치로, 반응성 맥락에서는 글로벌 환경에 있는 값에 접근할 수 있다. 즉 보통의 방법으로는 반응성 맥락에 있는 객체에 접근할 수 없고 이 객체에 값을 할당할 수 없다. 그런데 입력 위젯은 그것을 가능하게 하는 장치이다. 숫자를 입력하는 numericInput()입력 위젯은 다음과 같이 사용했다고 가정해보자.
numericInput("sel","값 입력",value =50, min=40, max=100)
이런 함수로 숫자 입력 위젯이 만들어지면, 이 위젯에 입력되는 값은 반응성 맥락에 존재하는 input 객체에 sel 이라는 슬롯으로 할당되고, 샤이니 서버 함수에서는 input$sel 의 형태로 그 값에 접근하게 된다. 그러므로 입력 위젯 함수들은 유일한 것은 아니지만, 반응성 맥락에 접근하는 가장 중요한 통로임을 이해해야 한다.
'전공 > R프로그래밍' 카테고리의 다른 글
R프로그래밍 25. 입력 위젯 함수들의 종류 -1 (0) | 2019.08.28 |
---|---|
R 프로그래밍 24. 스콥과 시야(visibility) (0) | 2019.08.26 |
R프로그래밍 23. 코드 실행 과정과 앱의 상태 (0) | 2019.08.20 |
R프로그래밍 22. R 세션과 options() (2) | 2019.08.19 |
R프로그래밍 21. 샤이니에서 유용한 함수들 (0) | 2019.08.16 |