我在一个包中编写了一个函数,它将获取用户提供的一些数据,并用这些数据的图形创建一个相当小的Word文档.然而,当工作目录是本地驱动器时,该功能工作得很好,但当驱动器是其他驱动器时,它会失败.错误包括:
png中退出第6-9行(skeleton.Rmd)错误(…,res=dpi,
一般来说,我确实有权限写入我当前的工作目录.事实上,当我在同一个包中调用一个类似的函数来生成一个表而不是一个图时,它工作得很好.
I think发生的事情是,Rmarkdown或knitr需要临时保存图形的png文件,以便将其放置在Word文件中,而它正在将其保存在没有权限的地方.Can I get around this behavior by specifying something with rmarkdown::render?
当我引用多个文件和包的文件 struct 时,我不知道如何准确地创建一个可复制的示例,但下面是我在需要什么信息方面的最佳try .下面是函数的一个示例:
myFun <- function(mydata, filename){
G <- ggplot2::ggplot(mydata, ggplot2::aes(x = A, y = B)) +
ggplot2::geom_point()
OutPath <- dirname(filename)
FileName <- basename(filename)
rmarkdown::render(system.file("rmarkdown/templates/myplot/skeleton/skeleton.Rmd",
package="mypackage"), output_dir = OutPath,
output_file = FileName, quiet = TRUE)
}
要获取骨架的文件 struct .我的套餐顶层Rmd:
实际的Rmarkdown 文档如下所示:
---
title: "My Plot"
output: word_document
---
```{r}
G
```
错误消息"退出第6-9行"指的是输出G的块.
要调用此选项,请使用:
myFun(mydata = data.frame(A = 1:10, B = 1:10),
filename = "my file.docx")
如果它正常工作,您将在当前工作目录中得到一个名为"my file.docx"的Word文件,其中包含一个图形.
Is there some way to work around rmarkdown's need to temporarily save this png file? Can I set the directory for this temporary file to something else where it 101 have write permissions?