Преобразование столбца текстовых URL-адресов в активные гиперссылки в Shiny

Я создаю пользовательский интерфейс для программы обогащения путей. Результаты показаны в таблице, как показано ниже.

enter image description here

Ниже приведен фрагмент, показывающий, что я использую DT:: renderDataTable и DT:: datatable для вывода таблицы на вкладке. spia_out() - это просто реактивная функция, которая запускает обогащение путей и создает фрейм данных.

spia_out <- reactive({
    ...get results in a dataframe...
  })

output$spiaout <- DT::renderDataTable({
      DT::datatable(spia_out(), extensions = ..., options = ...)
  })

Все работает отлично, таблица обогащения путей генерируется и печатается в соответствующем элементе пользовательского интерфейса. Моя единственная проблема заключается в том, как преобразовать последний столбец (KEGGLINK) URL-адресов в активные гиперссылки? Чтобы люди могли просто нажимать на них вместо копирования и вставки.

Извините заранее за размер скриншота. Надеюсь, вы увидите последний столбец KEGGLINK имеет URL-адреса, но они неактивны.

Ответ 1

Вам нужно сделать две вещи:

  • Измените последний столбец так, чтобы KEGGLINK был изменен на соответствующую HTML-ссылку, которая выглядит так: <a href='url'>link text</a>.

  • Передайте DT аргументу escape = FALSE, чтобы он не удалял код HTML.

На веб-странице DT есть пример этого в разделе 2.9: https://rstudio.github.io/DT/

Простым способом сделать # 1 будет что-то вроде:

mydata$url <- paste0("<a href='",mydata$url,"'>",mydata$url,"</a>")

Ответ 2

В качестве альтернативы, также возможно сохранить исходный файл данных без изменений и сообщить dataTable, как визуализировать столбец. См. Раздел 4.4 "Оформление столбцов" в DT docs.