R Shiny:输出名称和for循环出现问题

时间:2018-10-30 13:49:43

标签: r loops for-loop shiny output

我正在尝试在for循环中分配R闪亮的输出名称。我的代码拆分了一个文本,并检查每个元素是否包含单词“ table”,它通常看起来像“ table1”,“ table2”。然后,它使用功能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>

对于闪亮的应用程序,我得到了不同的结果:

Shiny app results

您能帮我解释一下为什么我的桌子上没有我的桌子1吗?

致谢!

0 个答案:

没有答案