r - 将 instagram/youtube 嵌入到 Shiny R 应用程序中

标签 r video youtube shiny embed

我想通过点击图表来播放 Instagram 或 Youtube 视频(例如显示异常值等)

到目前为止,明确告诉 Shiny 视频是什么:

require(shiny)
require(ggplot2)

# data
df <- data.frame(ID=c(1,2),x=c(33,7),y=c(50,16),name=c("Vid1","Vid2"),link=c("https://www.youtube.com/embed/Gyrfsrd4zK0","https://anotherlink.com"), stringsAsFactors=FALSE)

# video is explicitly embedded with the youtube link (i.e. not dynamic)
ui <- basicPage(
  plotOutput("plot", click = "plot_click"),
  verbatimTextOutput("selection"),
  conditionalPanel("plot_click!=null",
                   h4(textOutput("nametext")),
                   HTML('<iframe width="200" height="100" src="https://www.youtube.com/embed/Gyrfsrd4zK0" frameborder="0" allowfullscreen></iframe>'))
)

server <- function(input, output,session) {

  output$plot <- renderPlot({
    ggplot(data=df,aes(x=x,y=y))+
      geom_point()+
      scale_x_continuous(limits = c(0, 68))+
      scale_y_continuous(limits = c(0, 52.5))
  })

  output$selection <- renderPrint({
    nearPoints(df, input$plot_click)
  })

  info <- reactive({

    t <- as.data.frame(nearPoints(df, input$plot_click))
    s <- t[1,4]
    u <- t[1,5]
    list(s=s,u=u)

  })

  output$nametext <- renderText({if(!is.na(info()$s)){info()$s}})
  output$urltext <- renderText({if(!is.na(info()$u)){info()$u}})
}

runApp(shinyApp(ui, server), launch.browser = TRUE)

我希望视频只在点击时出现(并且不同点会有所不同),但是我不知道如何更改 conditionalPanel 以适应此情况。我尝试在服务器内部使用 renderImage,还有这个 GoogleGroups answer但没有快乐。

最佳答案

在服务器端,您可以使用:

 library(memisc) 
 output$video <- renderUI({
    click <- input$plot_click
    if(!is.null(click)){
      link = cases(
        "Gyrfsrd4zK0" = click$x > 40,
        "b518URWajNQ" = click$x > 20,
        "I5Z9WtTBZ_w "= click$x > 0
      )
      HTML(paste0('<iframe width="200" height="100" src="https://www.youtube.com/embed/', link ,'" frameborder="0" allowfullscreen></iframe>'))
    }
  })

在用户界面方面:
uiOutput("video")

关于r - 将 instagram/youtube 嵌入到 Shiny R 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740470/

相关文章:

javascript - 嵌入视频播放器播放按钮一次播放所有视频播放器

video - 如何计算视频的分辨率?

jquery - 检索给定用户的所有上传的视频

r - 不创建 SpatialGridDataFrame 对象的函数

r - POSIXct 原点基类型导致时区差异

html - 背景视频大小问题

api - youtube api电影租赁/购买

r - 你如何在 tmap 中定位标题和图例?

r - 来自 read.csv 的数据摘要的水平 xtable

java - Android-将YouTube数据API添加到项目