如何生成HTML代码并将其分配给R中的变量,而不将其保存在HTML文件中?(即(
功能必须类似
p <- pairs(data)
res <- htmlcodefunction(p)
res
输出必须是HTML代码而不是文件
您不能直接将图像编码为HTML。当您在HTML中看到图像时,通常是通过服务器上的图像文件链接来完成的。然而,有办法绕过这一点。
如果希望将图像数据存储为HTML文件中的字符,可以使用base64对光栅图像进行编码,或者在矢量图形(如R图(的情况下,可以将图像编码为SVG,这可能就是将图像存储为HTML的意思。
请注意,在您的示例代码中,您实际上并没有将任何内容存储到p
中,因为尽管pairs
会绘制一个图,但它不会返回对象,因此函数没有任何可操作之处。
无论如何,这里有一个小函数,它将以绘图函数为参数,并返回一个svg字符串,该字符串可以在HTML:中使用
as_svg <- function(my_plot, ...)
{
my_plot <- as.call(substitute(my_plot))
loc <- tempfile()
svg(loc, ...)
eval(my_plot)
dev.off()
readChar(loc, 1e6L)
}
你可以这样使用它:
as_svg(plot(rnorm(10), rnorm(10)))
#> [1] "<?xml version="1.0" encoding="UTF-8"?>n<svg xmlns="http://www.w3.org/2000/svg"
#> xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0
#> 0 504 504" version="1.1">n<defs>n<g>n<symbol overflow="visible" id="glyph0-0">
#> n<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L
#> 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/>n</symbol>n<symbol
#> overflow="visible" id="glyph0-1">n<path style="stroke:none;" d="M 0.382813 -2.578125 L
#> 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/>n
#> </symbol>n<symbol overflow="visible" id="glyph0-2">n<path style="stroke:none;"
#> d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094
#> 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25
#> 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C
#> ... <truncated>