2017-01-12 209 views
0

我有一個csv文件,我上傳到一個閃亮的應用程序。在其他信息中,csv文件包含一列名稱(輸入)和一列與每個名稱關聯的唯一ID。基本上我想要發生的是每當用戶選擇不同的名稱時,應用程序將獲取相應的ID並將其插入到URL中以將PNG圖像顯示爲輸出。例如,假設用戶選擇名稱「Joe Smith」,Joe的唯一ID爲「smithj01」。我需要該應用程序將「smithj01」插入到一個URL中,否則該URL通常會顯示Joe的圖像。如果用戶選擇「John Doe」並且John的唯一ID是「doej01」,那麼我需要應用程序將「doej01」插入到相同的URL中才能顯示John的圖像。基於用戶輸入閃亮的動態圖像輸出R

我試過在下面的代碼中寫了一個這樣做的函數,但它仍然只顯示一個帶有問號的圖像應該顯示的藍色框。

我已經試過一遍又一遍地解決這個問題,看了很多其他的帖子和示例代碼,但不能,爲我的生活,弄清楚這一點。請幫忙!非常感謝!

library(shiny) 

injury <- read.csv("injury_app.csv", stringsAsFactors = FALSE) 

"player_id" = "ID" 

player_photo_url = function(player_id) { 
    paste0("http://ssref.net/scripts/image_resize.cgi?min=200&url=https://d2cwpp38twqe55.cloudfront.net/req/201612101/images/players/", player_id,".png") 
} 

ui <- fluidPage(
    titlePanel("Title Goes Here"), 
    sidebarLayout(
    sidebarPanel(
     selectInput("Player", "Player", 
        choices = c("Enter a player..." = "", injury$Player)) 
    ), 
    mainPanel(
     uiOutput("image") 
    ) 
) 
) 

server <- function(input, output) { 
    current_player = reactive({ 
    req(input$Player) 
    }) 
    output$image <- renderUI({tags$img(src = player_photo_url(current_player()["player_id"])) 
    }) 
} 

shinyApp(ui = ui, server = server) 
+0

'的https:// d2cwpp38twqe55.cloudfront.net/REQ/201612101 /圖像/播放器/ doej01.png'返回HTTP錯誤404 – HubertL

+0

HubertL , 感謝您的答覆!這只是我給出的一個假設例子。一個真正的ID,例如,是「jamesle01」 – Abb

+0

請註明您的CSV的頭 – HubertL

回答

0

你有一些奇怪的事情怎麼回事,但最令人關注的事情似乎是你的企圖在選擇用於所選擇的選手名字的ID。假設CSV injury被讀入作爲數據幀這應該工作:

library(shiny) 

injury <- read.csv("injury_app.csv", stringsAsFactors = FALSE) 
uniq_players <- sort(unique(injury$Player)) 

ui <- fluidPage(
    titlePanel("Title Goes Here"), 
    sidebarLayout(
    sidebarPanel(
     selectInput("Player", "Player", 
        choices = c("Enter a player..." = "", uniq_players)) 
    ), 
    mainPanel(
     uiOutput("image") 
    ) 
) 
) 

server <- function(input, output) { 

    c_id <- reactive({ 
    shiny::validate(
     shiny::need(input$Player, "Select a player!") 
    ) 
    injury[injury$Player == input$Player, "ID"] 
    }) 

    c_url <- reactive({ 
    paste0("http://ssref.net/scripts/image_resize.cgi?min=200&url=https://d2cwpp38twqe55.cloudfront.net/req/201612101/images/players/", c_id(), ".png") 
    }) 

    output$image <- renderUI({ 
    tags$img(src = c_url()) 
    }) 
} 

shinyApp(ui = ui, server = server) 
+0

Hi mlegge!謝謝你的迴應。現在看起來它給了我,「當我嘗試選擇一名球員時,錯誤:對象'未找到球員'」。有沒有辦法解決這個問題? – Abb

+0

忘'損傷[播放器==輸入$播放機,「ID」]'是'需要損傷[損傷$播放==輸入$播放機,「ID」]'與數據幀處理代替data.table的時。我在代碼中做了調整 – mlegge

+0

這真是太棒了!非常感謝你解決我的爛攤子! :) – Abb