Rで次のことを行う必要があります。
1)動的に(...のX画像の場合)、4xNテーブルなど、それらを表示するテーブル/グリッドを作成します。
2) これらの各画像をクリック可能にして、その名前を R の関数にフィードします。たとえば、サルをクリックした場合、selected(monkey.jpg) という関数を呼び出す必要があります。
Rで次のことを行う必要があります。
1)動的に(...のX画像の場合)、4xNテーブルなど、それらを表示するテーブル/グリッドを作成します。
2) これらの各画像をクリック可能にして、その名前を R の関数にフィードします。たとえば、サルをクリックした場合、selected(monkey.jpg) という関数を呼び出す必要があります。
チートのように感じますが、少し JS を使用するのが最も簡単な方法です。
あなたの ui.R で、これをどこかに置きます (mainPanel の中など):
uiOutput("imageGrid"),
tags$script(HTML(
"$(document).on('click', '.clickimg', function() {",
" Shiny.onInputChange('clickimg', $(this).data('value'));",
"};"
))
サーバー関数で:
output$imageGrid <- renderUI({
fluidRow(
lapply(images, function(img) {
column(3,
tags$img(src=paste0("images/", img), class="clickimg", data-value=img)
)
})
)
})
次に、サーバー関数でアクセスinput$clickimg
して、最後にクリックされた画像を特定できます。これは (他の入力と同様に) リアクティブな値になるので、リアクティブ式または出力レンダリング関数 (より高度な Shiny ユーザーの場合はオブザーバー) 内からアクセスする必要があることに注意してください。ああ、初期値は になりますNULL
ので、それも確認することを忘れないでください。