Я рекомендую вам выполнить предварительную обработку в соответствии с вашими требованиями.Поскольку имена текстовых файлов могут измениться позже, они должны быть представлены в виде отдельного столбца.
Если ссылка на текстовый файл не требуется, подумайте об условной обработке для 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")