Я пытаюсь создать блестящее приложение, которое берет файл csv и извлекает из него конкретную информацию. Когда я загружаю один файл и запускаю мой код в порядке. Но теперь я хочу, чтобы пользователь мог выбирать, какой CSV-файл анализировать, потому что каждый из них содержит разные книги. Вот код, который у меня есть до сих пор
library("shiny")
library("tidyverse")
library("stringr")
## Define UI
ui <- fluidPage(
titlePanel("Find words in the text"),
## Sidebar panel
sidebarLayout(
sidebarPanel(
## Textual input
selectInput("source", "Choose Text",
choices = c("Book 1" = 1,
"Book 2" = 2),
selected = "Book 1"),
textInput("word", "Insert words", value = ""),
helpText("Type the word or words (separated by comma)\n
that you would like to find"),
submitButton(text = "Search", icon("refresh")),
br(),
textOutput("text")
),
## Main panel for outputs
mainPanel(
tabsetPanel(
tabPanel("Main",
tableOutput("view")),
tabPanel("Summary",
tableOutput("summary"))
)
)
)
)
server <- function(input, output) {
k <- reactive({
k <- ifelse(input$source == 1,
read_delim("book1.csv", delim = ";"),
read_delim("book2.csv", delim = ";"))
})
output$view <- renderTable({
k %>%
filter(str_detect(text,
str_split(input$word, ",")[[1]]))
})
output$text <- renderText({
palabras <- str_split(input$word, ",")[[1]]
n.times <- select(k, text) %>%
str_count(c(palabras))
paste("The word ", c(palabras),
" appeared: ", n.times, " times")
})
output$summary <- renderTable({
p <- str_replace_all(input$word, ",", "|")
k %>%
extract(col = text,
into = "Keyword",
regex = str_c("(",p, ")"),
remove = T, convert = T) %>%
na.omit()
})
}
## Create Shiny app
shinyApp(ui = ui, server = server)
Я также попытался изменить часть, начинающуюся с k <- reactive({
(где k
- это тиббл, где я хочу получить свою книгу), на что-то, где ясначала загрузите каждую книгу, а затем я просто отправляю ее на k
, например
book1 <- read_delim("book1.csv", delim = ";")
book2 <- read_delim("book2.csv", delim = ";")
k <- reactive ({
k <- ifelse(input$source == 1,
book1,
nook2)
})
Я пытался пару дней использовать учебные пособия и stackoverflow, но я не могу найти то, что мне действительно подходит,Я пробовал несколько разных способов, но, видимо, я что-то не так с функцией reactive
. Я был бы очень благодарен, если бы кто-нибудь мог помочь мне решить эту проблему и объяснить мою ошибку, поскольку это мое первое блестящее приложение.
Только для записи : Если я удалю все, что связано сreactive
часть и только загрузить файл в k
с чем-то вроде k <- read_delim("book1.csv", delim = ";")
, тогда мое приложение отлично работает для подсчета слов.