1. Learn
  2. /
  3. Courses
  4. /
  5. R로 Shiny 웹 애플리케이션 만들기

Connected

Exercise

음식 탐색: 대표 재료 다시 보기

각 나라의 요리는 소수의 고유한 재료 덕분에 특징이 뚜렷해져요. 소금이나 설탕처럼 어디서나 쓰이는 기본 재료만 보면 이런 차이를 드러내기 어렵습니다.

이때 도움이 되는 지표가 바로 term frequency–inverse document frequency(TFIDF)예요. 이는 코퍼스(여기서는 레시피) 내에서 특정 문서(요리)에 한 단어(재료)가 얼마나 중요한지를 수치로 나타냅니다.

tf_idf는 미리 계산해 두었고, 이를 포함한 확장 데이터셋 recipes_enriched도 제공했어요. 목표는 tf_idf로 측정한 한 요리의 가장 특징적인 재료를 가로 막대그래프로 보여주는 Shiny 앱을 만드는 것입니다.

선택한 요리에 따른 대표 재료를 대화형 가로 막대그래프로 표시하는 앱

계산 부분은 반응식으로 캡슐화하고, 그래프 코드는 그래프 생성에만 집중하도록 할 거예요. 이는 좋은 프로그래밍 습관이며, 모듈성 있고 성능이 좋은 Shiny 앱을 만드는 데 도움이 됩니다.

shiny, dplyr, ggplot2, plotly 패키지는 로드되어 있어요. 아래는 요리별 상위 재료를 필터링하고 가로 막대그래프를 만드는 데 도움이 되는 코드 조각입니다. 필요에 맞게 수정해 보세요.

top_ingredients <- recipes_enriched %>% 
  filter(cuisine == 'greek') %>% 
  arrange(desc(tf_idf)) %>% 
  head(5) 

ggplot(top_ingredients, aes(x = ingredient, y = tf_idf)) +
  geom_col() +
  coord_flip()

Instructions

100 XP
  • UI:

    • plot_top_ingredients라는 이름의 대화형 plotly 출력 요소를 추가하고, 적절한 레이블과 함께 tabPanel()로 감싸세요.
  • Server:

    • rval_top_ingredients라는 이름의 반응식을 추가해 선택한 요리에 해당하는 recipes_enriched를 필터링하고 tf_idf 값에 따라 가장 특징적인 재료만 남기세요.
    • 대표 재료와 해당 tf_idf의 대화형 막대그래프를 렌더링해 plot_top_ingredients라는 출력에 할당하세요. 추가로, 막대가 tf_idf 내림차순으로 표시되도록 구성해 보세요.