飞雪团队

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

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

[复制链接]

8993

主题

9081

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29309
发表于 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>
" {7 L  p5 S' z9 W" `& i# O<div id="fc">! x( ?' A2 v' p
<p><center> </center></p>
( Z# y0 p. c, n( J6 ?<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
# H' N7 q6 ~8 i0 e" E<div class="suo-content"><div style="text-align: right;">
5 E: Q( C, b) p1 R: V5 F" {                <div class="xControl"><i class="fa fa-caret-right"></i>
. r) b' K8 c2 ]% [! d                        <span class="xTitle"></span> 3 [* c0 I+ \( e# ~
                        相关讨论+ l$ y0 w1 [# K' [* j4 |9 @6 A) u
                        <div style="clear: both;"></div>
5 F1 J. ^1 S3 I9 A' Q" M+ |6 n                </div>1 Z) r& w2 n& x" i8 i
                <div class="xContent" style="display: none;"><p></p>
1 {9 y4 ^3 M3 @<ul>0 A, S; t% J2 }( `) Y
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>
; E. F- J, V4 ?( h& _+ _, B</li>2 v6 }6 G/ q1 W, ^; `. l. V
<li>8 B8 ]% x( c1 e! \
另见:github.com/ropenscilabs/ezknitr</li>
/ }. }' V4 z# D7 z; f</ul>0 s2 r, p! w7 X8 ]' h
<p></p></div>4 w+ @! @, }0 {7 |, I" G, c1 C( Y
        </div><p></p></div>1 s: z- L8 d, ?% f" z7 K
<hr>
6 Q% f* ]7 n( O& B# p( K<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>$ X" B/ p+ S. J
<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>
  [; x% e5 c! D. j- p6 }* E<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>: ]. [/ ~0 s0 J& [0 e; ]- u( ]
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
! D) W& A8 c% }' z+ B! z  m<div class="suo-content"><div style="text-align: right;">6 n+ G7 @! U$ n  g& T
                <div class="xControl"><i class="fa fa-caret-right"></i>
/ ~3 c  X* N6 Z  ]                        <span class="xTitle"></span> 9 E3 B( n3 k/ y1 a5 K
                        相关讨论
  |7 o( M  I' X! A8 D                        <div style="clear: both;"></div>
$ w9 R/ Y3 I# e+ G  a9 h                </div>! U6 h8 q! @( W  c3 V- f& N" q2 J
                <div class="xContent" style="display: none;"><p></p>+ k$ i: R4 G: R& _
<ul>! W& T( j. p( f. Q0 Z" x) ^# }
<li>
( C+ ^0 L9 H% D: P. A这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。+ c& V* ?! p. ?! w
</li>2 n: f! U( B3 O* w1 l- F
<li>. r0 M4 v( M4 j9 L
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。) _2 L+ `1 z/ B" q9 M9 c
</li>
+ {" h* Y- ~$ o9 j: X<li>3 b( |. O: R2 _7 `, k4 h$ C& s
这对我有用,它不会改变工作目录。谢谢。+ H4 _- R# g& j# h# x9 k& \
</li>
. E$ s2 T0 m& R% q& G0 }<li>$ P; V( I% P3 B5 Z3 z) h. E
是的,这很完美。非常感谢!: g* Q3 p0 G8 e/ q, w' r( |2 C
</li>
6 ]% x5 X% x" {: X<li>) C  h. w, b9 x( F- h
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>
5 R& m" w3 S* B! V% ?/ |9 F9 U( q. |</ul>
: l1 s' [. r2 @$ K4 E* b3 T0 r. V9 h# L<p></p></div>: f# G! s! o1 w% y
        </div><p></p></div>5 w1 T5 H! R  M
<hr>' r( {4 H" U  {8 P9 J* J
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
; x0 I, c7 q& {5 @5 U! a3 ]( j4 }<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>3 u1 P6 \( T* Y0 k
<p><center> </center></p>9 f2 u8 Q/ H4 Y. w& e
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>- b; N1 ^, J" X/ h8 P1 W4 @
<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
& a0 s' [# ]/ p* c: X, u<div class="suo-content"><div style="text-align: right;">
6 x! O# U! Q8 I7 w2 B! g3 O! H                <div class="xControl"><i class="fa fa-caret-right"></i>, o, z( v  c' u, N
                        <span class="xTitle"></span> 8 i: A/ R1 G7 Y+ g% k, x. s
                        相关讨论
5 ~( T7 B' t4 z4 I                        <div style="clear: both;"></div>
1 v5 v8 K7 L3 r, N' N: N                </div>
. L, q$ Y: E2 [$ |" i1 q                <div class="xContent" style="display: none;"><p></p>& J7 n% P2 C& u$ `" c
<ul>7 O8 i1 g' g/ S( \/ F& j' H8 T
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.( R4 [# j& Y/ _) f- i( S* b1 }
</li>1 A: r3 w. H; L+ c" p
<li>! `* J) ~& |6 D  R0 }
链接现在失效了。+ s0 W( k( B' Q! o) g4 [- a9 T
</li>& C* ^& y: Q# m1 R0 w# M
<li>' ~- X" g- ^9 Z5 ^6 D8 {9 J
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...5 u5 x1 P: Y) c
</li>
) M  R1 O% U+ I2 c</ul># P4 I, h- b: M, C0 ?5 e* x
<p></p></div>1 Q7 P2 ~$ n4 i0 r
        </div><p></p></div>
. c; Q* U5 x) C' G) H, Z<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-7-12 06:33 , Processed in 0.535075 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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