1
這是一個非常奇怪的行爲,在Shiny htmlOutput中使用循環。我一直在努力做的事情非常簡單,就是從Shiny htmlOuput執行一個Javascript代碼(console.log)並將循環編號輸出到控制檯。請參見下面的代碼:for循環閃爍htmlOutput不按順序執行
library(shiny)
ui <- fluidPage(
actionButton("goButton", "Go!"),
mainPanel(htmlOutput("result"))
)
server<- function(input, output) {
observeEvent(input$goButton,{
output$result <- renderUI({
html_output_list <- lapply(1:50, function(j) {
htmlname <- paste("html", j, sep="")
htmlOutput(htmlname)
})
# Convert the list to a tagList - this is necessary for the list of items
# to display properly.
do.call(tagList, html_output_list)
})
lapply(1:14, function(i){
htmlname <- paste("html", i, sep="")
output[[htmlname]] <- reactive({
paste('<script>number=',
i,
';console.log(number);</script>')
})
})
})
}
shinyApp(ui = ui, server = server)
點擊Go按鈕,結果應該是從1到14的有序序列號(因爲我從循環1到14的數字),但實際結果是14.1, 2,...,13。嘗試從1:20的範圍我會產生一個序列爲(14,15,16,17,18,1,19,2,3,4,5,6,7,8,20,9,10,11 ,12,13)。任何人都可以解釋這裏發生了什麼?它如何不遵循命令?顯然這不是一個隨機順序。
這可以得到正確的答案,但它是從我的目的略有不同。在輸出之前,您通過將Javascript分配給數組(x)來完成循環。是否有可能在循環內輸出?我的代碼是要實現這一點,但執行不符合正確的順序。謝謝。 – uPhone
嘗試與shinyjs包,與logjs函數。檢查修改的答案。 –