首页 > 解决方案 > 如何使用 R 将文本文件超链接到 HTML 文件中?

问题描述

我有一个 HTML 输出文件,并且该文件中有一个名为“描述”的列。当值为Report data does not match.

快照 HTML 文件如下:HTML 输出文件

所以,有专用的文本文件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")

如何进行文本文件的链接。如果问题需要任何修改,请告诉我。提前致谢!!!

标签: htmlrhyperlinktext-files

解决方案


我建议您根据您的要求进行预处理。由于文本文件的名称稍后可能会更改,因此应将它们作为单独的列提供。

如果不需要文本文件链接,请考虑稍后对 NA 进行条件处理。

下面的示例基于一个主列表。文本文件位于子文件夹中。

诀窍是使用 HTML 标记href并使用sanitize.text.function如下所示的测试用例。

您需要在子文件夹中创建一些虚拟文本文件,例如gauge-D00.txtgauge-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 表位于任何根节点,文本文件位于其下方的目录中。因此,以后可以将文件上传到服务器或将其留在本地 PC 上。

这就是我使用相对链接的原因,它适用于所有浏览器。

请注意,文本文件的绝对路径似乎是 Microsoft Edge 和 Internet Explorer 的问题。测试:用鼠标右键复制链接并将其粘贴到 Edge 的地址文本框中,文本文件将打开。在使用例如 C:\Users\%USERNAME%\Documents 或 D:_working\ 进行测试时,我找不到 Firefox 和 Chrome 的任何问题,例如:

# 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")

推荐阅读