将一列文本 URL 转换为 Shiny 中的活动超链接
Posted
技术标签:
【中文标题】将一列文本 URL 转换为 Shiny 中的活动超链接【英文标题】:Convert a column of text URLs into active hyperlinks in Shiny 【发布时间】:2015-09-03 05:54:06 【问题描述】:我正在为通路丰富程序创建用户界面。结果如下表所示。
下面是一个 sn-p,显示我正在使用 DT::renderDataTable 和 DT::datatable 在选项卡中输出表格。 spia_out() 只是一个反应函数,它运行通路富集并生成数据帧。
spia_out <- reactive(
...get results in a dataframe...
)
output$spiaout <- DT::renderDataTable(
DT::datatable(spia_out(), extensions = ..., options = ...)
)
一切正常,路径扩充表已生成并打印在相应的 UI 元素中。我唯一的问题是如何将 URL 的最后一列 (KEGGLINK) 转换为活动超链接?这样人们就可以点击它们而不是复制和粘贴。
提前为屏幕截图的大小道歉。我希望你能看到最后一列 KEGGLINK 有 URL,但它们没有激活。
【问题讨论】:
在这里查看答案:***.com/questions/21909826/… @KenYeoh,这个答案并不完全适用,因为这里的问题与 DT:renderDataTable,而不是闪亮:renderTable 相关,如果他按照那里的建议进行操作,它将无法工作,因为 DT 会逃脱默认为 html。 @jrdnmdhl 没错!它不起作用,因为我使用的是 DT::renderDataTable 而不是 shiny::renderDataTable 另外,也可以保持原始数据框完整并告诉 dataTable 如何呈现列。请参阅DT docs 中的第 4.4 节列渲染。 在链接中,没有可以做超链接的例子。你能添加实际的代码吗? 【参考方案1】:你需要做两件事:
修改最后一列,将 KEGGLINK 更改为正确的 HTML 链接,如下所示:<a href='url'>link text</a>
。
将escape = FALSE
参数传递给DT,这样它就不会转义HTML 代码。
DT 网页在第 2.9 节中有一个示例: https://rstudio.github.io/DT/
执行 #1 的简单方法如下:
mydata$url <- paste0("<a href='",mydata$url,"'>",mydata$url,"</a>")
【讨论】:
谢谢!这行得通!但是,这将在同一选项卡中打开。我可以右键单击并选择在新选项卡中打开,但是默认情况下有没有办法在新选项卡中打开链接? 知道了!mydata$url <- paste0("<a href='",mydata$url,"' target='_blank'>",mydata$url,"</a>")
现在是第 2.10 节而不是第 2.9 节。
有没有办法通过链接的名称来考虑这一点,即 html_text() 作为因素但将列保留为链接?以上是关于将一列文本 URL 转换为 Shiny 中的活动超链接的主要内容,如果未能解决你的问题,请参考以下文章