【发布时间】:2017-07-26 08:10:22
【问题描述】:
我想将knit()ted 文档作为 R 对象直接存储在 R 中,作为 字符向量。
我知道我可以通过 knit()ing 到 tempfile() 来做到这一点,然后导入结果,如下所示:
library(knitr)
library(readr)
ex_file <- tempfile(fileext = ".tex")
knitr::knit(text = "foo", output = ex_file)
knitted_obj <- readr::read_file(ex_file)
knitted_obj
返回
# [1] "foo\n"
如预期的那样。
有没有办法做到这一点不使用tempfile()并直接将结果“管道”到向量?
为什么我会想要这个,你问?
-
*.tex字符串将以编程方式保存到光盘,稍后呈现为 PDF。在下游函数中从磁盘读取呈现的*.tex会使代码更加复杂。 - 缓存要容易得多,并且将这个缓存移动到另一台机器上。
- 我真的很害怕一般的副作用,特别是跨机器/操作系统的文件系统恶作剧。我想将它们隔离为尽可能少的(
print()、save()、plot())函数。
这会让我成为一个糟糕的(或只是强迫症)R 开发人员吗?
【问题讨论】:
-
这与 this question 的副本有关,但我想直接在 R 中捕获 CLI 工具(例如下游
texi2pdf)的输出,而不触及文件系统。 Knitr 是原生 R,所以我猜这是一个不同的问题。