-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.R
73 lines (53 loc) · 1.63 KB
/
app.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# Load libraries ----------------------------------------------------------
list_of_packages <- c("shiny", "dplyr", "stringr", "DT")
new_packages <- list_of_packages[!(list_of_packages %in% installed.packages()[,"Package"])]
if(length(new_packages)) install.packages(new_packages)
library(shiny)
library(dplyr)
library(stringr)
library(DT)
# Import data -------------------------------------------------------------
df_thoughts_long <- readRDS("df_thoughts_long")
labels <- readRDS("labels")
# App ---------------------------------------------------------------------
# Client-side
ui <- fluidPage(
# Application title
titlePanel("Topic explorer"),
# Sidebar with a topic selector
sidebarLayout(
sidebarPanel(
selectInput("topic_number",
"Select topic number",
choices = seq(1:90)
),
textOutput("heading")
),
# Show table with sample texts
mainPanel(
tableOutput("topic_table")
)
)
)
# Server-side
server <- function(input, output) {
# define table
output$topic_table <- renderTable({
# get the right column based on input
df_thoughts_long %>%
# filter topic number
filter(topic == input$topic_number) %>%
# discard topic column
select(-topic) %>%
# add row number
mutate(id = row_number()) %>%
# move it to the front
relocate(id, .before = title)
})
# get heading with topic frex terms
output$heading <- renderText({
paste0("Topic ", input$topic_number, ": ", str_c(labels$frex[eval(parse(text = input$topic_number)), 1:10], collapse = ", "))
})
}
# Run the application
shinyApp(ui = ui, server = server)