gpt4 book ai didi

使用 Makefile 并行化时,R markdown 文件与图形重叠

转载 作者:行者123 更新时间:2023-12-04 12:47:42 25 4
gpt4 key购买 nike

我创建了一个简单的例子来展示我目前遇到的问题。

我有一个名为 example.Rmd 的 R-markdown 文件,其中包含以下代码

```{r}
plot(rnorm(10000))
```

和一个包含以下内容的 Makefile 文件
all : example01.html example02.html

example01.html : example.Rmd
Rscript -e "library(knitr); knit2html(input='example.Rmd', output='example01.html')"

example02.html : example.Rmd
Rscript -e "library(knitr); knit2html(input='example.Rmd', output='example02.html')"

如果我按顺序运行 Makefile 文件
make

没有问题。

如果我并行运行 makefile
make -j 2

knit2html 函数生成的块重叠,两个 html 文件包含相同的图像。

有什么建议吗?我一直在寻找解决方案,但一无所获。

最佳答案

使用 Karl 的想法,我编写了一个可能的解决方案。

all : example01.html example02.html

example01.html : example.Rmd
mkdir -p dir_$@
Rscript -e 'library(knitr); opts_knit$$set(base.dir = "dir_$@"); knit2html(input="example.Rmd", output="dir_$@/$@")'
mv dir_$@/$@ .
rm -r dir_$@

example02.html : example.Rmd
mkdir -p dir_$@
Rscript -e 'library(knitr); opts_knit$$set(base.dir = "dir_$@"); knit2html(input="example.Rmd", output="dir_$@/$@")'
mv dir_$@/$@ .
rm -r dir_$@

对初始代码有两个修改。
  • 正如 Karl 所评论的,我已经包含了 opts_knit$set(base.dir="dir_example0?.html") 行,这样就可以在该路径中创建图形文件夹。
  • 我在 Rscript -e 命令中交换了 "和 ' 符号,如评论 here

  • 并行执行
    make -j 2

    工作正常。

    关于使用 Makefile 并行化时,R markdown 文件与图形重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23648815/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com