在我的htmlTable包中,我一直在使用base::interactive
来确定输出是应该输出为字符串还是输出到浏览器窗口(这里是{{3} }})。不幸的是,interactive()
在code内运行时返回TRUE
,在笔记本中确定执行环境的等效方法是什么?
我已尝试ls()
和search()
,但无论环境如何,它们看起来都相同。我还拥有由RStudio notebook文档调用的knit_print.htmlTable
S3函数,但它似乎无法在笔记本环境中正确检测到它。
答案 0 :(得分:0)
所以我到目前为止找到的最佳解决方案是使用RStudio API实现上下文检测器:
prIsNotebook <- function() {
if (!rstudioapi::isAvailable()) {
return(FALSE)
}
ctxt <- rstudioapi::getActiveDocumentContext()
if (grepl("\\.Rmd$", ctxt$path)) {
return(TRUE)
}
# Look for html_notebook within the header if the file hasn't been saved
contents <- ctxt$contents
header <- grep("^---$", contents)
if (length(header) == 2) {
return(any(grepl("html_notebook$",
contents[min(header) : max(header)])))
}
return(FALSE)
}
我不会将此作为答案来检查,因为这更像是一个黑客而非真正的解决方案。