飞雪团队

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 20000|回复: 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>/ m( z5 L8 a( I& v" Y3 C: a
<div id="fc">
! P, ^7 L/ l+ `( B0 B1 C<p><center> </center></p>
2 X  u/ T8 s, q, m+ I# }2 K<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>6 r0 \/ O3 H% D' q5 J( e1 r) h
<div class="suo-content"><div style="text-align: right;">
+ U, G. h+ i, n8 S1 T                <div class="xControl"><i class="fa fa-caret-right"></i>
! \$ D, ^4 g2 ~! v7 l5 C                        <span class="xTitle"></span> + R5 W# z, g' q, p" ^( {9 U
                        相关讨论
) Y" y( y" i0 }. d                        <div style="clear: both;"></div>
+ r6 N+ l9 r' U; Q: N  Y' U                </div>
0 Y7 k3 a# H6 q                <div class="xContent" style="display: none;"><p></p>
; s$ J% R( r$ t# j+ X$ p# W<ul>, {/ b3 N+ S# n
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>
; m4 k0 f0 K4 i# z1 V3 f  Z! U</li>! j! C" e8 S- Q
<li>! m/ O) P5 u' r2 O" C  N7 H8 O( {/ ]
另见:github.com/ropenscilabs/ezknitr</li>
: t# B9 {; G6 B8 x& L</ul>, w# S, b6 v1 x+ k6 C. l# y7 p0 ?9 c
<p></p></div>3 h6 M$ h0 Q7 i; e( I) O
        </div><p></p></div>
) G3 D% }. ~) e. N/ j  a<hr>
% W* y* `/ r$ R0 o% d<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>) Y6 I' C# S3 X+ m; u
<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>) I* ^; g  u  U" w% c* u5 \+ 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>$ g  y1 s. U7 o  i1 {7 o8 ~
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
4 A0 O* e, @  k& h: K* [4 d  k<div class="suo-content"><div style="text-align: right;">
! @8 i  d  W8 O& I8 f6 F5 v, W                <div class="xControl"><i class="fa fa-caret-right"></i>
- H8 q7 }3 L4 n$ [% D: B% m& |, P                        <span class="xTitle"></span> 6 e9 \% S" y8 {, O+ u
                        相关讨论
/ s+ L- x/ S& d- {                        <div style="clear: both;"></div>+ w- F& `7 H) G$ w* g% ~3 j  ~0 Q
                </div>; H6 X& g$ ^. K( l+ ]
                <div class="xContent" style="display: none;"><p></p>
6 ?) i2 x6 W! L4 m# a<ul>
  R* e5 k: |4 b5 w; Q2 v<li>
8 K4 w  W3 q! i) t& b9 X* G0 o8 J这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
& y2 H/ f: x9 V7 W5 X; K3 v</li>
' `7 H6 ~2 ~2 C) j, R/ T, P<li>
; r7 j* b2 i" P% @@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
, f+ u) P/ y( J& _9 ], W0 a5 p" D</li>" h) l& f- a' w; l
<li>
2 y. {( Y0 h: V7 y" j! L这对我有用,它不会改变工作目录。谢谢。
% t  @! r+ k( w) \( \/ Y: n</li>
& [- L9 m% d7 O<li>- o; n& i7 C' @* j% v9 q
是的,这很完美。非常感谢!
$ e0 x- \8 Z. l# E</li>
- P7 V4 M0 p3 K; U3 A* i<li>$ {  {0 t- J/ i6 E3 Z* X0 M7 C; |
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>% M) ^  y5 R& b
</ul>
: @, ]% T# ?) p2 n$ v5 }3 [0 O- u<p></p></div>9 p5 f  W3 n2 C$ R$ @$ _
        </div><p></p></div>
/ f9 D9 _3 e3 V3 X. o* Q<hr>* i1 E$ \. U7 b* C, `" Z, u2 D
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>' P/ J" Q6 s7 N% I' |
<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
6 T6 w: \! L9 u4 \0 K<p><center> </center></p>0 S1 ]  P# l* r/ E% B
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
8 X  W2 ?  X7 f0 |  p; R# V<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
, u. z) }, k& r, L% B<div class="suo-content"><div style="text-align: right;">7 Y5 E+ t2 E0 r# j, S
                <div class="xControl"><i class="fa fa-caret-right"></i>
& N7 T5 \6 q+ f. _+ A! _( K% M4 f# A                        <span class="xTitle"></span>
. {% G+ n" A1 N, j$ V                        相关讨论
3 A0 a2 ~. L% b% O                        <div style="clear: both;"></div>; K" h7 d2 ^- I! P% l3 w
                </div>
9 @* f0 A) E9 U6 B                <div class="xContent" style="display: none;"><p></p>
, k5 ?/ @( g- x7 w9 d3 F8 K3 \<ul>
' O$ ?$ I  r2 C' z2 a1 \<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.& f% \: s+ W1 B
</li>3 S6 c* T" c$ [/ p- G
<li>
3 N$ o8 k) _2 `8 R% A6 a链接现在失效了。
3 l6 H9 S7 i4 R5 ]6 Y</li>/ i) j' V# A3 c+ u0 K0 @# j& f
<li>
0 M' @$ M1 `- B: E这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...6 D; V9 P' _+ }0 Q, B! x
</li>
. ]7 x7 P* n1 r# ~9 I! }, P  B</ul>- k) T0 `: x/ U, r/ a9 }
<p></p></div>: E" ~* i6 a& J! h" v1 U
        </div><p></p></div>! K5 U, X: U4 D4 |; y1 }/ ]6 C7 Z
<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-10-26 01:59 , Processed in 0.064238 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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