飞雪团队

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

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

[复制链接]

6831

主题

6919

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22823
发表于 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>
5 C8 i0 \  h+ o+ C<div id="fc">  \; Z7 N9 y. n- I0 R
<p><center> </center></p>" T; I) \0 h. m3 k, O2 {) X
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
  Y5 o. V3 {8 l) Z; i# W/ r<div class="suo-content"><div style="text-align: right;">4 D; Z5 Q& n: I+ O7 Z9 i; L
                <div class="xControl"><i class="fa fa-caret-right"></i>2 d6 P  p, h. J; `
                        <span class="xTitle"></span> $ [# d. Z0 \/ O( u6 E: M
                        相关讨论9 _2 n0 \& ]% h# _9 z8 I
                        <div style="clear: both;"></div># c$ a9 B* D) N) b
                </div>
' G+ \: E9 O- l# o+ ]" x                <div class="xContent" style="display: none;"><p></p>
' R3 K, J4 f2 _1 G( x8 h$ ?' _' L<ul>
' d7 h! m( c+ n) r$ V9 Y0 L; A<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>+ U: B4 W! ~7 T' L) T/ O/ C2 ]
</li>% a! N, ?( j4 \
<li>5 l0 I. _# J: t) o% o( B
另见:github.com/ropenscilabs/ezknitr</li>
8 Q0 L$ e9 r( r/ v; E( {</ul>7 d' s1 x1 k- D# m2 O5 l4 \
<p></p></div>
! ^. |7 Y2 E# F6 W( |3 Q) r        </div><p></p></div>
8 y% ]# n7 h! d% r; O# w* }<hr>
8 T' T( M& G, x" ]<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>% u1 r7 @) k( x; L9 W+ Z
<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>7 Z# V: s( j: D  h. Y$ J& i; ?
<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 `: t0 Q( U/ B5 ]  |4 S
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>* n$ A* z' r" \2 v
<div class="suo-content"><div style="text-align: right;">
" {, s! b$ x* E1 g                <div class="xControl"><i class="fa fa-caret-right"></i>
7 _$ b# q- W, y$ T                        <span class="xTitle"></span> 4 i$ R# K" K; Z/ x% v
                        相关讨论
, Y, v- `- L- k                        <div style="clear: both;"></div>
2 s1 z, d6 {2 Z$ ~                </div>
) L; G- \' H7 z5 y$ }                <div class="xContent" style="display: none;"><p></p>
. e0 S: Z  |) x. V<ul>
& O1 R" d6 u  t3 T5 h<li>" ]5 H* E0 Z& i! C# j
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
! [( ~/ ?4 D' p+ @9 ~6 Q7 S</li>0 x5 r0 F) t, r( k
<li>
/ ], s. ]" E. z7 k$ E@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
3 c3 E  N% T5 p/ s7 i* m  [3 Q  G</li>; L. ]' Z7 q& b; i, P1 h7 [+ W
<li>
& D8 E& w, H1 i9 D这对我有用,它不会改变工作目录。谢谢。
! t+ [. l# U* C% o0 ~& V9 B</li>/ }; Z. P) [/ `4 [
<li>
9 O' F, w+ @8 A/ \) l, B6 @是的,这很完美。非常感谢!
* d* o" E( w1 i7 R! k3 D- o</li>4 W- M& i# C! @2 }, n% n
<li># h- |& a# \3 z! S+ ^# Q
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>
" J/ e' m/ m1 x) B) ]</ul>
1 s/ z6 s. l' @# K% V8 h<p></p></div>  z/ [* s0 y" M
        </div><p></p></div>* i: _7 {+ n5 m; J6 G
<hr>6 _2 H4 _/ }+ ]4 j2 N( }3 q+ ^
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>% x; r7 l& n, H4 K# Y& {& Q
<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
4 ?$ U2 y( @- z; n$ J5 m<p><center> </center></p>) z% }: T/ J1 i8 l$ x9 H8 w
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>% n( r7 R, d" q5 O% M8 P6 ~1 o/ Q, u# |
<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
' Q/ `% k& U# ]! s<div class="suo-content"><div style="text-align: right;">
- f, ~: E! g' ?6 y1 ?; |3 C                <div class="xControl"><i class="fa fa-caret-right"></i>3 q* x! j& o' p
                        <span class="xTitle"></span>
' T- h' r- R6 \                        相关讨论  U" w1 Q; u9 }* c9 [
                        <div style="clear: both;"></div>
% H9 B6 c3 \7 `0 l5 G% C3 c5 D                </div>
" S6 @0 o, Y5 i9 t0 Z1 N                <div class="xContent" style="display: none;"><p></p>' V3 U3 O/ X8 h
<ul>2 z+ `" d8 d# k+ X: A. M
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.# h! ^/ D4 H/ ~! {) X1 x
</li>3 e* ?: g4 L* Z1 _) N  @1 x
<li>$ ?6 N) {' A& d% q& Y& d' I- H$ y# I  x
链接现在失效了。5 E2 L% \: X7 f- Q7 X; Z7 s5 d
</li>' P- Q6 n0 l8 V: e; N+ K  k: r
<li>
( C% M2 @$ V/ m, X这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...: a- T) J; D/ q. I3 W
</li>5 w( W% B$ a4 C* y- l' R% P
</ul>
& {2 [/ L$ L  p9 }9 I<p></p></div>
9 ]+ C0 M# |3 n( ]        </div><p></p></div>
  m1 \" K5 s1 z. @4 u0 U; q, |<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2025-7-1 10:25 , Processed in 0.060035 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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