飞雪团队

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

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

[复制链接]

7726

主题

7814

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
25508
发表于 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>
" d2 C" ^: k1 R+ ^9 l7 Q" M0 `<div id="fc">
, z& N5 f: d! z' d# }+ D<p><center> </center></p>9 C% }* G  J# _  \
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>! J" G) I) {4 G) }1 Q9 @
<div class="suo-content"><div style="text-align: right;">
, x9 o' M. {, p$ }) i                <div class="xControl"><i class="fa fa-caret-right"></i>
' U& P( m& ?0 ^- u( I; x) p                        <span class="xTitle"></span>
  R( O8 x, U( z4 {2 g4 r, x( L& X                        相关讨论) c1 {, B8 x% L
                        <div style="clear: both;"></div>
8 a/ @% v) @9 x* A5 n                </div>8 R# b, C2 n8 o) T% N
                <div class="xContent" style="display: none;"><p></p>
* U- a3 }: C2 z) Q* a/ e1 |<ul>3 Y% e! C- E7 e# f* \- B" W/ s
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>, U( [! o/ L, p; x. l: u+ C
</li>
9 N! j, x' S5 m3 H+ g% O7 x; ~<li>
6 p9 d' p# W- u$ J' E# z另见:github.com/ropenscilabs/ezknitr</li>* \* T8 W; }/ t' j6 T! u; Y" h
</ul>
& D6 Z4 J, ?  @: b* d! s! w, x<p></p></div>$ x% x6 n8 z9 ~( e; c
        </div><p></p></div>
( J. y6 [; n* x, I$ ?<hr>
0 F. l& o1 S2 E% a' q& n+ m0 }4 A<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>  j' a, @+ G# Y5 V) J0 F5 G7 X
<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>+ |- p5 Y- H/ [# W; \) N+ \
<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>) B! E6 F& Y9 l) y) U; Y, v
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>) ?1 x" H6 A9 Q0 W
<div class="suo-content"><div style="text-align: right;">8 F2 m1 @& o. t: u$ y4 B" B# t
                <div class="xControl"><i class="fa fa-caret-right"></i>& }, o3 v5 d9 T; M9 D6 X8 _
                        <span class="xTitle"></span>
+ q/ I7 ]( v4 u& b+ E                        相关讨论7 W- c! {0 `& |" ]
                        <div style="clear: both;"></div>+ ]) X/ [7 V" c1 {% ~
                </div>0 k  x; d# X- Q; f( R. j
                <div class="xContent" style="display: none;"><p></p>* E# B; T7 p: T( }, s. L2 d# D
<ul>
" n! l, Y% M1 l2 z  @3 @$ b<li>- b0 {/ W! G' f
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
, a/ N# A. y3 N( u8 Z4 |2 V4 r</li>- u1 E- J7 C2 O9 d6 J# b" g( M& `
<li>
! l- u: a# {' C4 ^4 O' Q) ^! X; N@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
7 w& l, K3 S8 U% @6 t- U4 _</li>8 a! d6 f( \4 y
<li>, A. M' K% f; @$ P# _  `; P+ B! ?
这对我有用,它不会改变工作目录。谢谢。
, t  R7 E! b0 W4 C: Q</li>: q+ R/ ^4 F5 o) G" a! I7 `
<li>
) ?) A4 Y' U: g; C. _是的,这很完美。非常感谢!2 m% `4 H5 f6 q- u
</li>$ A9 e1 k/ N: n0 E$ A' w
<li>% S# d9 c2 B8 s) V/ P( T3 \# ], w
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li># M; @' i. ]6 i, G/ h- q% e% K
</ul>5 O& L0 I' C5 e& t8 t% n+ ~& }3 }
<p></p></div>
2 J. f6 c1 g7 U1 W* g        </div><p></p></div>7 V# z- D% B0 j/ B# e0 y$ T
<hr>* l; c7 ]' z7 ?- X/ A7 J2 c
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
& v  b+ S% W3 G8 z6 A# R: E" ~<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>' I+ b; g4 k  a8 y; {
<p><center> </center></p>, B/ }+ ]. j( x  e! [
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
& I4 |; ~8 ]  C6 q  U<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
1 n( _/ Y, Z1 X, [<div class="suo-content"><div style="text-align: right;">, Q0 n: t3 Y- A9 N8 I) `
                <div class="xControl"><i class="fa fa-caret-right"></i>
6 o1 o# b' J% j' E( ~# w% m0 S' f, X                        <span class="xTitle"></span> . f0 T9 J. z6 U
                        相关讨论9 J  A. T6 E  E; A: J! g9 Q
                        <div style="clear: both;"></div>
9 P1 c% W+ I; c! H: [. K- U                </div>
2 D3 l% Z* }6 o4 i( h/ c, ]  g; K                <div class="xContent" style="display: none;"><p></p>6 I* v, c$ ~, \
<ul>. [) N$ X0 W2 k
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.8 C0 N. p( u' v/ R3 n8 e
</li>6 n, c4 A! q  d3 ~+ h$ L0 q* W  i
<li>
5 f/ R- b0 T+ w+ P4 a链接现在失效了。
# P) O+ j  A; x0 O" }7 C8 c$ v</li>
+ a# b6 o0 g  B, g/ S$ u$ x- Z<li>% H4 R8 V5 {* n6 r8 Z0 y
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/.../ O5 D9 e* C( N
</li>
' c8 j5 \' z& [& ?( E: \! A5 _</ul>
* u5 f; o! C) U' F- F" x<p></p></div>
9 G( V% O. u- [6 V        </div><p></p></div>$ i2 Z' @8 Q- t+ H+ e5 x2 J
<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2025-10-31 04:23 , Processed in 0.131087 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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