我想知道是否有任何函数可以很容易地在RStudio的查看器窗格中可视化html对象。例如,我想知道是否可以在查看器窗格中查看html表。
library("Quandl")
library("knitr")
df <- Quandl("FBI_UCR/USCRIME_TYPE_VIOLENTCRIMERATE")
kable(head(df[,1:9]), format = 'html', table.attr = "class=nofluid")
答案 0 :(得分:7)
我有一个适用于有线表的解决方案。
kable(iris) %>% kableExtra::kable_styling()
这会自动显示在查看器窗格中。不需要临时文件。
答案 1 :(得分:6)
这是在RStudio中快速完成此操作的方法
view_kable <- function(x, ...){
tab <- paste(capture.output(kable(x, ...)), collapse = '\n')
tf <- tempfile(fileext = ".html")
writeLines(tab, tf)
rstudio::viewer(tf)
}
view_kable(head(df[,1:9]), format = 'html', table.attr = "class=nofluid")
如果kable
函数可以返回类kable
的对象,则可以将view_kable
重命名为print.kable
,在这种情况下只调用kable
函数会在观众中打开桌子。如果您认为这很有用,请继续在knitr
github页面上提交功能请求。
答案 2 :(得分:6)
我最近将此功能添加到htmlTable()中的Gmisc-package功能,功能相当简单:
print.htmlTable<- function(x, useViewer = TRUE, ...){
# Don't use viewer if in knitr
if (useViewer &&
!"package:knitr" %in% search()){
htmlFile <- tempfile(fileext=".html")
htmlPage <- paste("<html>",
"<head>",
"<meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\">",
"</head>",
"<body>",
"<div style=\"margin: 0 auto; display: table; margin-top: 1em;\">",
x,
"</div>",
"</body>",
"</html>", sep="\n")
cat(htmlPage, file=htmlFile)
viewer <- getOption("viewer")
if (!is.null(viewer) &&
is.function(viewer)){
# (code to write some content to the file)
viewer(htmlFile)
}else{
utils::browseURL(htmlFile)
}
}else{
cat(x)
}
}
RStudio recommends你使用getOption(“viewer”)代替@ Ramnath的建议,原始的RStudio :: viewer()。我的解决方案还添加了utils :: browserURL(),以防你不使用RStudio。我从this博文中得到了这个想法。
答案 3 :(得分:1)
正如this RStudio Support page所述,关键是使用tempfile()
:
请注意,“查看器”窗格只能用于本地Web内容。这个 内容可以是写入会话的静态HTML文件 临时目录(即具有由tempfile生成的路径的文件 功能)或本地运行的Web应用程序。
请参阅我对this question的回答,了解一个简单的例子。
答案 4 :(得分:0)
对于kable
对象,我们可以使用print.kableExtra
library(knitr)
x <- kable(head(iris), format = "html")
library(kableExtra)
class(x) <- c("kableExtra", class(x))
print(x)