html - 将变量传递给R中的HTML标签
问题描述
我需要在闪亮的应用程序中显示推文,所以我们假设 URL 在数据框中。这是我没有变量的代码:
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');")
),
mainPanel(
HTML('
<blockquote class="twitter-tweet" data-lang="en">
<a href="https://twitter.com/Twitter/status/1144673160777912322">tweet1</a>
</blockquote>
') )
),
server = function(input, output, session) {}
))
)
然后我对 HTML 进行一些更改并传递一个变量
HTML('
<blockquote class="twitter-tweet" data-lang="en">
paste0("<a href='",Top5Retweet2[1,3],"'>","tweet","</a>")
</blockquote>
')
) )
但我收到了这个错误,我认为是因为引号
Error: unexpected '<' in "<"
另外,我尝试了所有这些但仍然没有显示任何内容
cat("<a href=\"",Top5Retweet2[1, 3],"\">","tweet","</a>")
cat("<a href=", dQuote(Top5Retweet2[1, 3]) ,">","tweet","</a>")
更新 :
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');")
),
mainPanel(
htmlOutput("tweets_show")
)
),
server = function(input, output, session) {
output$tweets_show <- renderUI({
HTML(
paste('<blockquote class="twitter-tweet" data-lang="en">',
paste("<a href=\"",Top5Retweet2[2, 3],"\">","tweet","</a>"),
'</blockquote>')
)
})
}
))
任何帮助谢谢
解决方案
从?renderUI
我们可以使用tagList
插入多个 HTML 标记的列表
library(shiny)
runApp(list(
ui = fluidPage(
mainPanel(
htmlOutput("tweets_show")
)
),
server = function(input, output, session) {
tws <- c("https://twitter.com/Twitter/status/1144673160777912322","https://twitter.com/Twitter/status/1144673160777912322","https://twitter.com/Twitter/status/1144673160777912322")
output$tweets_show <- renderUI({
tagList(
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');")
),
HTML(
paste('<blockquote class="twitter-tweet" data-lang="en">',
paste("<a href=\"",tws,"\">","tweet","</a>"),
'</blockquote>')
))
})
}
))
推荐阅读
- typescript - 为什么 Typescript 将我的 keyof 类型强制为 never 类型,我该如何解决?
- java - 使用 java8 迭代两个列表以查找匹配并返回布尔值
- javascript - 我可以用python(或slack应用程序?)编写一个脚本,允许输入一个URL,检查5个不同基域的成功加载吗?
- node.js - mongoose.find() 返回带有查询结果的空数组
- java - 使用 filevault-package-maven-plugin 从包中排除节点
- c# - 在 C# 控制台应用程序中使用 syncgateway 将数据从 Couchbase 服务器拉到 coubase lite
- python - 如何在python列表中打印特定索引的元素?
- python-3.x - 我想要'td'的文本,但它给出了错误另外,我没有标签(我想完全删除它,只想要其中包含的文本)
- android - 获取 Google Beacon 的距离和 UUID
- ggplot2 - 安排地块的困难