1
これはShiny htmlOutputの内部でループを使用すると、本当に変わった動作です。私がやろうとしてきたことは、Shiny htmlOuputからJavascriptコード(console.log)を実行し、ループ番号をコンソールに出力することです。以下のコードを参照してください:14,1ですが、実際の結果(iは1から14までループ数として)Goボタンをクリックするとshiny 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)
を、結果は1〜14から順序付けられたシーケンス番号である必要があり、 2、...、13。 1時20分からiの範囲を試してみると、(14,15,16,17,18,1,19,2,3,4,5,6,7,8,20,9,10,11 、12,13)。誰でもここで何が起こっているのか説明できますか?どうやって注文に従わないの?明らかに、それはランダムな順序ではありません。
をこれが正しい答えを与えるかもしれないが、それは私の目的とは若干異なります。出力前に配列(x)にJavascriptを割り当ててループを終了しました。ループ内で出力することは可能ですか?私のコードはこれを達成することですが、実行は正しい順序に従いません。ありがとう。 – uPhone
logjs関数を使ってshinyjsパッケージを試してみてください。修正された答えを確認してください。 –