我正在尝试在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>
对于闪亮的应用程序,我得到了不同的结果:
您能帮我解释一下为什么我的桌子上没有我的桌子1吗?
致谢!