r knitr - 嵌入式 HTML 标签被转义 - 如何关闭
r knitr - embedded HTML tags being escaped - how to turn off
我在使用 knitr 和嵌入式 html tables 时遇到了一些麻烦。基本上发生的事情是当我在 html 中嵌入 xtable 输出时,html 标签被转义,导致输出不可读。 print.xtable 的输出似乎正确地产生了预期的输出(html table)但是当在 xtable 嵌入的文档上调用 knit 时,转义字符产生。有人有解决办法吗?
提前致谢!
下面的版本和代码示例:
- RStudio 0.98.1103
- R 3.13
knitr 1.9
library("knitr")
library("xtable")
col1 <- c(1, 2, 3)
col2 <- c("a", "b", "c")
col3 <- c(TRUE, FALSE, TRUE)
df <- data.frame(col1, col2, col3)
# display the dataframe
df
# HTML is properly generated here
tbl <- print(xtable(df),type="HTML",include.rownames=FALSE)
testknitr <- "<html>
<head>
<title>Test Knitr from variable</title>
</head>
<body>
<h1>Testing Knitr escaping </h1>
<table>
<tr>
<td>
<!--begin.rcode label=\"a table\"
tbl
end.rcode-->
</td>
</tr>
</table>"
# inspecting the file will show all < replaced with < and > replaced with >
# and new lines replaced with \n, which does not render properly in a browser
knit(text=testknitr, output="testknitr.html")}
您需要添加 results="asis"
选项。
尝试以下操作:
testknitr <- "<html>
<head>
<title>Test Knitr from variable</title>
</head>
<body>
<h1>Testing Knitr escaping </h1>
<table>
<tr>
<td>
<!--begin.rcode label=\"a table\", results=\"asis\", echo=FALSE
print(xtable(df),
type=\"HTML\",
include.rownames=FALSE)
end.rcode-->
</td>
</tr>
</table>"
knit(text=testknitr, output="testknitr.html")
此外,在代码块中打印 xtable 的输出以避免不必要的换行符。
我在使用 knitr 和嵌入式 html tables 时遇到了一些麻烦。基本上发生的事情是当我在 html 中嵌入 xtable 输出时,html 标签被转义,导致输出不可读。 print.xtable 的输出似乎正确地产生了预期的输出(html table)但是当在 xtable 嵌入的文档上调用 knit 时,转义字符产生。有人有解决办法吗?
提前致谢!
下面的版本和代码示例:
- RStudio 0.98.1103
- R 3.13
knitr 1.9
library("knitr") library("xtable") col1 <- c(1, 2, 3) col2 <- c("a", "b", "c") col3 <- c(TRUE, FALSE, TRUE) df <- data.frame(col1, col2, col3) # display the dataframe df # HTML is properly generated here tbl <- print(xtable(df),type="HTML",include.rownames=FALSE) testknitr <- "<html> <head> <title>Test Knitr from variable</title> </head> <body> <h1>Testing Knitr escaping </h1> <table> <tr> <td> <!--begin.rcode label=\"a table\" tbl end.rcode--> </td> </tr> </table>" # inspecting the file will show all < replaced with < and > replaced with > # and new lines replaced with \n, which does not render properly in a browser knit(text=testknitr, output="testknitr.html")}
您需要添加 results="asis"
选项。
尝试以下操作:
testknitr <- "<html>
<head>
<title>Test Knitr from variable</title>
</head>
<body>
<h1>Testing Knitr escaping </h1>
<table>
<tr>
<td>
<!--begin.rcode label=\"a table\", results=\"asis\", echo=FALSE
print(xtable(df),
type=\"HTML\",
include.rownames=FALSE)
end.rcode-->
</td>
</tr>
</table>"
knit(text=testknitr, output="testknitr.html")
此外,在代码块中打印 xtable 的输出以避免不必要的换行符。