飞雪团队

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 14627|回复: 0

R:在 RStudio 中,我如何将 knitr 输出到不同的文件夹以避免弄乱我的驱动器? ...

[复制链接]

8292

主题

8380

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
27206
发表于 2022-2-12 18:18:47 | 显示全部楼层 |阅读模式
<h2>R: In RStudio how do I make knitr output to a different folder to avoid cluttering up my drive?</h2>
* I% L/ A" t! F: a3 p<div id="fc">
4 _6 L4 z5 f, e" K& b+ r<p><center> </center></p>& B" n4 ~/ h& }  O
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
/ ]/ c9 m! `* y( |" R<div class="suo-content"><div style="text-align: right;">
; t, y: ~$ `; Q1 o                <div class="xControl"><i class="fa fa-caret-right"></i>
' V* z' @# U# y- C, m* \                        <span class="xTitle"></span>
3 t# e3 V4 @- X8 `' u. e# D* G                        相关讨论
, I7 ~+ s& X$ c# o4 b                        <div style="clear: both;"></div>. \$ g) a8 y  T! S* O* S
                </div>+ P8 p: P- B. C9 q
                <div class="xContent" style="display: none;"><p></p>' y1 j! ]. x5 r( Z
<ul>
3 O7 D( X+ I6 H% T% @<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>
0 l: Z& R/ {$ Y/ {</li>7 l9 O! d2 T8 p) W7 Q2 X
<li>: [4 y$ R; n  v4 c7 {
另见:github.com/ropenscilabs/ezknitr</li>
; N, M% h( Z" O  O7 _+ S& C</ul>
0 A0 ^: k* v$ ^& R  i3 R% y<p></p></div>
* e; Q& Z. c0 O2 t7 p        </div><p></p></div>0 A2 t$ N) r/ E& J0 j' z
<hr>4 j) r2 M0 T; ^& d- Q) K/ G
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>' g# b) C. Q! B' V
<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>
  ]7 M2 E$ P$ k4 ], u) z, b' Y* Y<div class="codecolorer-container text dawn" style="overflow:auto;white-space:nowrap;width:100%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br>2<br></div></td><td><div class="text codecolorer">knit: (function(inputFile, encoding) {<br>$ j' y; m1 U5 ?0 \" i3 \
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
) e2 A3 h2 G$ i- m* K+ j<div class="suo-content"><div style="text-align: right;">1 P- K# q% W# l1 I2 @
                <div class="xControl"><i class="fa fa-caret-right"></i>
& [8 R4 H4 X, ^# V                        <span class="xTitle"></span>
1 m* r# \% [4 m/ j7 u                        相关讨论/ Z4 M8 O; H; K* N  T$ Y( Z
                        <div style="clear: both;"></div>0 W$ S# x- w' a; n
                </div>4 p9 P0 |/ e' k" q+ L7 j, e; k
                <div class="xContent" style="display: none;"><p></p>
; r/ q3 K; S% I) f9 P<ul>
& b, z9 i: V( W/ |! R<li>% B1 D8 g6 Y) H  E& g  ~
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。$ L, G( y8 Q' p- r, W
</li>
5 A6 b: G* w0 W4 M" I1 V<li>* y, U6 K. v! D2 `
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
& H; H/ k4 x# M  |" p/ d2 ~' Q</li>. C" Q: P' T4 R, c9 |, A. r0 H7 C
<li>
) k/ X# b! i% {4 k: W, R/ x这对我有用,它不会改变工作目录。谢谢。4 t3 S2 n# |; _: @
</li>3 D, w% K% O& E
<li>
+ u4 r- l$ g+ x" e是的,这很完美。非常感谢!5 u; G, y4 ?5 X& r4 s
</li>
- Q# |0 n- I6 T( K. i<li>: x6 X/ p& Z, a2 v$ k' J; e( y
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>+ t$ R* y/ m3 c/ }
</ul>/ h% x. s1 u: d, Y+ N. D3 W
<p></p></div>
/ D# ?8 s5 O4 |- y/ B1 `        </div><p></p></div>" B  w6 s3 ~. h# E! K
<hr>
  z& J% {2 q4 n<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>% S) n( {- F3 h7 F6 l
<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
# V% ~) Z" N! D& ~<p><center> </center></p>4 F3 K9 V) P& a# C: d& b! `8 S' B7 Z
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>% g: [  M* z& J* y
<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>9 j: b8 X! a6 E7 K4 d, W' k: _" @6 M
<div class="suo-content"><div style="text-align: right;">3 |  s7 ?4 [4 z1 `  w* _) X
                <div class="xControl"><i class="fa fa-caret-right"></i>
6 x$ z# Q3 v3 t  K7 A                        <span class="xTitle"></span> 4 m) P4 i4 I$ Z! s7 T8 r
                        相关讨论
$ m0 I; m$ t9 C9 k; D% ]4 T) k                        <div style="clear: both;"></div>' Q3 N# e# u9 F! m+ I$ j/ {
                </div>; j% {+ i) Y+ p$ E1 l1 K
                <div class="xContent" style="display: none;"><p></p>
: b* [+ r6 Y2 `* i<ul>/ l2 f! Z1 r7 _3 F$ g
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.
: A- X# w) g2 l( A</li>
9 R) y2 N; ]/ ?<li>
* H4 M; g) B" [+ W链接现在失效了。% T2 U+ \0 q% g5 T
</li>
  O6 E2 P; l+ f( Q# w<li>
- \- U; B+ I7 M& }* I1 D3 w' b2 c3 I9 a这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...
8 D& i( z3 G+ S6 R- |2 b</li>
% i& k+ S$ E) T- _</ul>% s8 t: g- Q0 n0 ?/ a$ N
<p></p></div>
5 ~: T( Y+ Y' q% N/ C$ [        </div><p></p></div>
/ W9 d$ l# D: z. r/ f& P7 @6 C<hr></div>
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|飞雪团队

GMT+8, 2026-2-28 14:42 , Processed in 0.061238 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表