将一列文本 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 @jrdnmd​​hl 没错!它不起作用,因为我使用的是 DT::renderDataTable 而不是 shiny::renderDataTable 另外,也可以保持原始数据框完整并告诉 dataTable 如何呈现列。请参阅DT docs 中的第 4.4 节列渲染。 在链接中,没有可以做超链接的例子。你能添加实际的代码吗? 【参考方案1】:

你需要做两件事:

    修改最后一列,将 KEGGLINK 更改为正确的 HTML 链接,如下所示:&lt;a href='url'&gt;link text&lt;/a&gt;

    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 &lt;- paste0("&lt;a href='",mydata$url,"' target='_blank'&gt;",mydata$url,"&lt;/a&gt;") 现在是第 2.10 节而不是第 2.9 节。 有没有办法通过链接的名称来考虑这一点,即 html_text() 作为因素但将列保留为链接?

以上是关于将一列文本 URL 转换为 Shiny 中的活动超链接的主要内容,如果未能解决你的问题,请参考以下文章

将一列时间戳转换为 pandas 中的句点

Pandas: 如何将一列中的文本拆分为多行? | Python

将一列浮点数转换为累积百分比

将一列字符串转换为熊猫列表

自动将所有文本URL转换为工作超链接

使用Android的Google Sheets,如何将一整列URL激活成超链接