Я пытаюсь назначить блестящее имя выхода R в цикле for. Мой код разделил текст и проверил для каждого элемента, содержит ли он слово «таблица», он часто выглядит как «таблица1» и «таблица2». Затем выполняется поиск соответствующего фрейма данных по номеру таблицы с помощью функции fun_extract_table (расположенной в файле main.R, файл не требуется показывать). Кадр данных отправляется в renderTable. Но по какой-то причине в блестящем приложении оно всегда возвращает один и тот же фрейм данных и последнюю итерацию цикла.
Вот код.
Server.R
library(shiny)
source("main.R", local = TRUE)
text_separator <- "/r/n"
shinyServer(function(input, output, session) {
observeEvent(input$do, {
splited_text <- strsplit(my_text, text_separator)
responses_tags <- tagList()
for(i in splited_text){
check_elem <- substr(i, 1, 5)
if(check_elem == "table"){
num_table <- as.numeric(substr(i, 6, nchar(i)))
extracted_table <- fun_extract_table(num_table)
cur_table <- paste0("my_table", num_table)
print(cur_table)
print(extracted_table)
output[[cur_table]] <- renderTable(
return(extracted_table)
)
responses_tags <- tagList(responses_tags, tableOutput(cur_table))
print(responses_tags)
}else{
responses_tags <- tagList(responses_tags, shiny::tags$p(HTML(i)))
}
}
output$docx_display <- renderUI(
responses_tags
)
})
})
Ui.R
library(shiny)
shinyUI(
fluidPage(
actionButton("do", "Ok")
uiOutput("docx_display")
)
)
Для печати я получил текущий результат:
[1] "my_table1"
Mon tableau TEST Test
1 test TesT
2 tESt TTTT
<div id="my_table1" class="shiny-html-output"></div>
[1] "my_table2"
Mon tableau 2 TEST 2 Test 2
1 Test 2 TesT 2
2 tESt 2 TTTT 2
<div id="my_table1" class="shiny-html-output"></div>
<div id="my_table2" class="shiny-html-output"></div>
Я получил другой результат для блестящего приложения:
Не могли бы вы помочь мне и объяснить, почему у меня нет таблицы 1 в блестящем приложении, пожалуйста?
С уважением!