我完全是网络新手和所有这些东西。 我希望能够通过Shiny应用中的用户输入显示特定的推文。 以下是我在这篇文章中的尝试:How can i embed a twitter timeline in a shiny app?。我正在尝试显示此推文:https://twitter.com/AndrewYNg/status/894994683931148288
library(shiny)
runApp(list(ui = fluidPage(
tags$head("<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s) [0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','twitter-wjs');</script>"),
titlePanel(""),
sidebarLayout(
sidebarPanel()
, mainPanel(
a("Tweets by Andrew Ng", class="twitter-tweet"
, href = "https://twitter.com/AndrewYNg/status/894994683931148288"
)
)
)
)
, server = function(input, output, session){
}
)
)
它不显示推文,而是显示推文的链接。我想标签$ head不包含好东西,但我无法弄清楚应该是什么。
答案 0 :(得分:2)
将脚本包装在shiny::HTML()
中,以便内容不会转义HTML。在您的示例中,<script>
已转义为<script>
。或者更好的是,使用shiny::tags$script()
检查Twitter文档,了解如何嵌入推文并确保标记正确:https://dev.twitter.com/web/embedded-tweets
library(shiny)
runApp(list(
ui = fluidPage(
tags$head(
tags$script("!function(d,s,id){var js,fjs=d.getElementsByTagName(s) [0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','twitter-wjs');")
),
titlePanel(""),
sidebarLayout(
sidebarPanel(),
mainPanel(
HTML('
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">
Want to break into AI? You can learn Deep Learning from new deeplearning.ai courses on Coursera:
<a href="https://www.coursera.org/specializations/deep-learning">https://www.coursera.org/specializations/deep-learning</a></p>— Andrew Ng (@AndrewYNg)
<a href="https://twitter.com/AndrewYNg/status/894994683931148288?ref_src=twsrc%5Etfw">August 8, 2017</a>
</blockquote>
')
)
)
),
server = function(input, output, session) {}
))
我使用原始HTML作为推文,但您可以将其转换为HTML标记对象。