Как сделать гиперссылку на текстовые файлы в HTML-файл, используя R? - PullRequest
1 голос
/ 10 июля 2019

У меня есть выходной файл HTML, и в этом файле есть столбец с именем «Описание». Я хочу связать локально сохраненные текстовые файлы с некоторыми записями в этом столбце, если значение равно Report data does not match.

Снимок файла HTML выглядит следующим образом: HTML Output File

Итак, для row no: 12, 16, 17, 18, 19, 20 есть выделенные текстовые файлы, которые я хочу связать с колонкой Description.

Строка кодов для создания HTML-файла:

library(xtable) extract1 <- result[,list(TestCaseID, breadcrumb, Discription),] print(xtable(extract1), type = "html", file = "extracted.html")

Как сделать связывание текстовых файлов. Пожалуйста, дайте мне знать, если какие-либо изменения требуются в вопросе. Заранее спасибо !!!

1 Ответ

1 голос
/ 10 июля 2019

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

Если ссылка на текстовый файл не требуется, подумайте об условной обработке для NA позже.

Пример ниже основан на основном списке.Текстовые файлы находятся в подпапках.

Хитрость заключается в использовании HTML-тега href и sanitize.text.function, как показано ниже для тестовых случаев.

Вам потребуетсясоздайте несколько пустых текстовых файлов, таких как gauge-D00.txt , gauge-D01.txt и т. д., чтобы попробовать пример.

# --------------------------------------------------------
# gauge main ID list
#---------------------------------------------------------
# ID,location,description,textfile
# D00,nature reserve,Otternhagener Moor,../gauge-D00.txt
# D01,nature reserve,Helstorfer Moor,../gauge-D01.txt
# FER,benchmark,Negenborner Weg,../gauge-FER.txt                        
#----------------------------------------------------------
# text files reside in /data-develop-text-file-link/
# ---------------------------------------------------------
library (xtable)

gaugelist <- structure(list(
  ID = structure(1:3, .Label = c("D00", "D01", "FER"), class = "factor"),
  location = structure(c(2L, 2L, 1L), .Label = c("benchmark", "nature reserve"), class = "factor"),
  description = structure(c(3L, 1L, 2L), .Label = c("Helstorf", "Negenborn", "Otternhagen"), class = "factor"),
  textfile = structure(c(2L, 3L, 1L), .Label = c("../gauge-FER.txt", "../gauge-D00.txt", "../gauge-D01.txt"), class = "factor")),
  class = "data.frame", row.names = c(NA, -3L)) 
head(gaugelist)

# set HTML tag for linking to local file  -------------------------------------------- 
gaugelist$description <- paste("<a href=", gaugelist$textfile, ">", gaugelist$description, "</a>")
head(gaugelist)

# remove textfile column from data.frame --------------
gaugelist$textfile <- NULL
head(gaugelist)

# print HTML table and sanitize by using your own function (add subfolder) ---------------------------------------
print(xtable(gaugelist), type = "html", 
      sanitize.text.function = function(str) gsub("..", "./data-develop-text-file-link", str, fixed = TRUE), 
      file = "gauge-list.html")

Редактировать:

Несколько лучше ссылаться на текущий каталог ./data-develop-text-file-link с помощью ./.Я отредактировал это для обработки gsub, но это не имеет значения.

Структура HTML и текстовых файлов, описанная в моем ответе выше и на которую лишь намекают на пример, основана на структуре сайта.Таблица HTML расположена в любом корневом узле, а текстовые файлы - в каталоге под ним.Позже появляется возможность загрузить файл на сервер или оставить его локально на ПК.

Именно поэтому я работал с относительными ссылками, которые работают для меня во всех браузерах.

Обратите внимание, что абсолютные пути к текстовым файлам, похоже, проблема с Microsoft Edge и Internet Explorer.ТЕСТ: Скопируйте ссылку правой кнопкой мыши и вставьте ее в текстовое поле адреса Edge, и текстовый файл откроется.Я не смог найти никаких проблем с Firefox и Chrome при тестировании, например, C: \ Users \% USERNAME% \ Documents или D: _working \ например:

# print HTML table and sanitize by using your own function (add subfolder) ---------------------------------------
print(xtable(gaugelist), type = "html", 
      sanitize.text.function = function(str) gsub("..", "file:///C:/Users/webma/Documents/data-develop-text-file-link", str, fixed = TRUE), 
      file = "gauge-list.html")
...