飞雪团队

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

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

[复制链接]

9314

主题

9402

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
30272
发表于 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>
. J7 t5 K# N# J  G, ~4 L: L<div id="fc">1 G* A* _' `2 |. j" `$ Q$ m  f
<p><center> </center></p>4 ]. r1 c5 Z2 ]7 D& Z' u& N1 O# f2 [
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>( L( S* l; b$ L1 S6 V; T; _5 T
<div class="suo-content"><div style="text-align: right;">
* z' Y5 W9 P% b8 ]                <div class="xControl"><i class="fa fa-caret-right"></i>
' Y* m* {8 U  y6 K  ~                        <span class="xTitle"></span> $ C( T9 c% N8 v& [; |
                        相关讨论
7 s# X  z. s! d- v7 ^/ ^, |* h                        <div style="clear: both;"></div>
" n8 O" r" t, h0 x                </div># l2 K$ W8 z; U* t
                <div class="xContent" style="display: none;"><p></p>, X4 N# |, E" y
<ul>& ~8 u6 m8 k) I' f. o' ?/ Z. ~4 r
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>( N5 y8 w' A9 U' V
</li>8 B) w) ^! h" a
<li>
; _# S6 w* K7 n0 N3 s另见:github.com/ropenscilabs/ezknitr</li>
9 |$ E( r5 W$ t</ul>
2 u) V  X2 P" Y9 I<p></p></div>
7 ?# |1 p6 G9 r8 j  t        </div><p></p></div>: k. z) P9 m9 P) M- [4 S2 k4 l: v/ |
<hr>
$ n* Y" _2 Z8 p# w<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
9 P8 g( W" F( B<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>- `* D% ~2 X1 h
<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>
/ v( `9 `9 j$ T) z  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
- p% x, I5 Y/ ]5 o  d<div class="suo-content"><div style="text-align: right;">0 g" R$ y3 N+ }
                <div class="xControl"><i class="fa fa-caret-right"></i>0 L% L/ N' C& x- f
                        <span class="xTitle"></span> $ F6 [' P; b) h2 _5 B; i
                        相关讨论
# w/ F3 b, `, }  ^2 k                        <div style="clear: both;"></div>5 e$ \9 g; L1 r2 E" r  s
                </div>; M2 j0 x# K3 \: d% e* M8 S' J
                <div class="xContent" style="display: none;"><p></p>
+ P7 ]) t* `2 S& ?0 w! i<ul>
9 R. B/ w  e: d- l: m4 t- k( ~<li>
- g: Z+ ^7 j) g: c* S这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
7 F; v; |+ R& e; [+ J4 w- X! a</li>
* S9 Q1 d! p1 c  V% J+ }1 X0 e<li>
# r8 P' L  J5 ^# R3 ]7 G5 a3 M  {@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。& u9 D4 e1 L) _7 t& M/ \3 x
</li>
$ G9 X0 ?+ l, U; C2 I9 ~<li>" w2 a+ t1 K$ H, u8 O$ h! {
这对我有用,它不会改变工作目录。谢谢。& o" g3 P: ]& z
</li>
2 f+ l" ?" a4 w<li>
% O% j+ G/ R  u( m$ K  y. ^是的,这很完美。非常感谢!
* u; R7 `4 ~- h+ E& [6 l</li>
: H5 K' ~& f9 c6 K2 w6 U<li>9 @9 a% x: z& o) f7 T5 D9 v% H
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>
5 Z0 p( D: v0 z1 a) f</ul>) F+ U! J6 j, e: h
<p></p></div>* v6 e; Y7 G! T* ^6 ~
        </div><p></p></div>+ S: U. N( W$ s5 V: G: F
<hr>
) G% D0 l' U# k& I<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
# j& c$ j9 d/ F  [/ h* e0 C<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
6 t1 V3 p) r& h( i4 v. t<p><center> </center></p>0 j+ |: ~6 z# y
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>2 }: M4 t8 e( s: l
<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>3 _2 d1 Z) E8 r+ ]+ t
<div class="suo-content"><div style="text-align: right;">
- R* z. `- I' K                <div class="xControl"><i class="fa fa-caret-right"></i>' U  J0 J% j' P, i
                        <span class="xTitle"></span>   S" I& w! g5 g: s- v2 N* F
                        相关讨论
( @' W; l" ]6 L, D; Q9 x& t1 S                        <div style="clear: both;"></div>
0 E: i$ Z  D, l% O7 H                </div>1 Y5 {; a4 Q1 ?# l% A6 ^+ m
                <div class="xContent" style="display: none;"><p></p>
; y7 |" e5 f2 f3 n<ul>5 r2 f4 R0 H4 Q4 y9 {; E
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.
2 `% Z7 z0 f4 _2 U</li>
1 z7 k' W5 v4 c8 Z<li>
# Q& _3 y; r  R0 v* K链接现在失效了。
8 Q- k7 X' J8 ], v3 ~</li>
- T0 l/ A* P+ i/ t9 I- ]# M8 R<li>
- _+ n5 T" i9 {3 U' e# ~% ~, W这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...  _/ v' c* g' I, \+ N3 R
</li>
& w" H- {4 s- G& C& _) d) Z</ul>
3 l4 A8 }6 ?" R- l' Q9 v<p></p></div>
  M( E4 V+ y, C$ V        </div><p></p></div>
  C+ q; `* n1 L& Y$ q' e. B( s9 E<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-10-26 02:44 , Processed in 0.070153 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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