飞雪团队

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 14628|回复: 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>& y+ g7 J6 V$ j0 x" y! F
<div id="fc">6 F: r8 w/ l2 L1 Q8 M4 w6 l
<p><center> </center></p>& ^- S) Z* V6 O, s& {0 \8 C# r
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>; _8 [5 Z& X! k! d, Y2 `
<div class="suo-content"><div style="text-align: right;">
8 w8 a- C" j% f: K7 W                <div class="xControl"><i class="fa fa-caret-right"></i>
7 N6 K3 c! r! n4 i6 e3 F                        <span class="xTitle"></span>
: T4 a1 k" d! x9 d& D9 O                        相关讨论
6 l  }9 ^5 P2 w# e( w6 E                        <div style="clear: both;"></div>
* n* m- R# r' ]& q7 R- ]                </div>
' Q3 d& W( n2 s$ r" W                <div class="xContent" style="display: none;"><p></p>
. c. {8 ~: M) q7 N, c<ul>; O* ?+ Y* `# t
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>3 S: J( Z3 M' P% ^$ j( ?3 |6 J' t
</li>
1 E; }! b0 Y" m<li>. W6 X5 q# i7 K8 ^( P' \/ D
另见:github.com/ropenscilabs/ezknitr</li>: c. p$ ~' T9 Q2 Z& q# z- |
</ul>& G2 @1 B3 L% Z5 a
<p></p></div>
' w! |: B7 L0 d- ^        </div><p></p></div>
# Y  o0 G5 O' f7 g<hr>4 J" k" S, _' L4 z% Y( i2 `  z
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
0 }0 Z% b) N1 @0 i0 Q3 k<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>+ ]- A. t( l$ x3 b0 c: M
<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>
2 l3 F/ j0 i* f$ g1 Z6 e1 N- c  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>. I1 U8 X& N# ]$ w$ H9 ?
<div class="suo-content"><div style="text-align: right;">
( f9 u) X& Y7 S. Q& ~) y                <div class="xControl"><i class="fa fa-caret-right"></i>
% F: S4 v6 w) r                        <span class="xTitle"></span> / O: E* a2 U8 ]8 ^) b
                        相关讨论
* A9 _& [1 u3 w. ~2 q8 \1 q3 }                        <div style="clear: both;"></div>
! a; z- H! O$ J+ d                </div>: j" W1 i6 L8 R7 I
                <div class="xContent" style="display: none;"><p></p>4 f! T' H6 H! Q
<ul># b" U, p' L7 N6 T& C* k
<li>% L) i) X( H2 B% c- g9 v; g
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。( C3 q5 x& L. Q
</li>. [2 N1 L1 x+ M0 V, n( `! ~" E
<li>
6 `% X+ O& M0 Z; @7 B- `@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。: U" o+ H+ n1 v. K1 V
</li>' `1 I9 y# L/ ?; H( a8 c4 F) a
<li>
. f) ~7 a6 I8 K' c( L' O& Q这对我有用,它不会改变工作目录。谢谢。
% W4 S3 G  h9 ?, f( Z! l. ?' {</li>; L" n( m/ S* ~7 ]
<li>- s' P+ s" N; T& V& a$ {
是的,这很完美。非常感谢!( t! p! a9 @& C3 S7 S' N" ~9 _! g' [( \. @
</li>
( B. F" |" R$ q: x. Y' ~: J; S<li>+ S/ J( F) {  s9 P/ p+ i
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>
* H/ I" E+ M0 l& v/ D. g! F) {</ul>
) s3 N; ?1 E3 B2 v" q0 o# [, S<p></p></div>) M0 C( m& R6 Q1 @6 F1 S
        </div><p></p></div>
# P4 `* O. t' X+ t) H3 s& E3 `& D<hr>$ [1 J7 q  o9 I3 ]
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>1 x0 ]5 e" h* {3 p) e
<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
3 i, q: _$ C* O2 }# H<p><center> </center></p>5 N3 q0 J! q# q# i+ n: O
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
- ]6 Z. w$ ?& B3 ^<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>- \( v8 h; w, [* a+ J8 f3 m( p
<div class="suo-content"><div style="text-align: right;">7 j/ i! o7 A7 \) C7 Q
                <div class="xControl"><i class="fa fa-caret-right"></i>
& p/ ?/ X6 @0 }9 p$ Z1 u/ C" s                        <span class="xTitle"></span> ; C1 z/ D. O8 g2 h# J2 `) C
                        相关讨论2 r, x6 @  Q, ^! O! Z) D
                        <div style="clear: both;"></div>
1 r1 x7 k# o3 U' C- d+ j                </div>* v: K" w; m- D+ L
                <div class="xContent" style="display: none;"><p></p>( v- \8 J3 i6 d3 R# R! O* _
<ul>' r7 k; k, u- f) t8 w, ]- v
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.
3 f/ v7 @, s) M5 Z7 W# @</li>
) T! J! Z" Z8 ?6 b<li># |- }/ L1 m7 ]# `
链接现在失效了。6 O; E  J; H% o% a) @1 P7 J- D
</li>
8 O# u2 m7 S" L' l4 Q<li># G6 ]! i' U- s+ U% u, ~- J
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...
% ?" K+ s& y! ]' X/ n! o0 L2 w</li>* c# c+ V7 }5 y* b' m- j
</ul>
3 S7 U9 @' t2 v# @7 s<p></p></div>
+ I9 a& d& j6 F  K7 Q        </div><p></p></div>
. f# n. Z! S) x1 a" V" k. m<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-2-28 16:00 , Processed in 0.060665 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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