3

Rで次のことを行う必要があります。

1)動的に(...のX画像の場合)、4xNテーブルなど、それらを表示するテーブル/グリッドを作成します。

2) これらの各画像をクリック可能にして、その名前を R の関数にフィードします。たとえば、サルをクリックした場合、selected(monkey.jpg) という関数を呼び出す必要があります。

4

1 に答える 1

9

チートのように感じますが、少し 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ので、それも確認することを忘れないでください。

于 2014-03-31T22:34:12.993 に答える