飞雪团队

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

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

[复制链接]

6738

主题

6826

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22542
发表于 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>
& P: S! W" m3 ^, }& A+ N<div id="fc">  J# H, b# H# e
<p><center> </center></p>
' f* ?  S% \/ ]  {4 k! C<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
4 V2 K  f5 ^9 `5 D# ~<div class="suo-content"><div style="text-align: right;">4 o9 V. @9 V' a. `& e+ \7 e
                <div class="xControl"><i class="fa fa-caret-right"></i>
! y: j  S4 _" x" n- {0 i                        <span class="xTitle"></span>
2 G# v9 K" \  F" i- r) S8 Y( A                        相关讨论
6 o, L0 j9 }1 M1 a* E" ]* j                        <div style="clear: both;"></div>: _  k$ J3 e* \$ f9 j* h9 k2 @
                </div># Z0 _) j( }+ I; O, x- Z/ |7 V7 A
                <div class="xContent" style="display: none;"><p></p># y: O7 j' u* f
<ul>" m7 ?0 w: z1 g9 ^. R$ [1 P* U
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>1 i' \0 R$ j6 N  d/ Y. J8 F
</li>
. V, r9 S- ^2 C% w/ G: i  f+ v" V<li>
7 ?$ _6 i/ v% y5 E1 v$ _* m: x另见:github.com/ropenscilabs/ezknitr</li>7 I: m3 ]8 |0 [% K. G
</ul>
  \% q0 Q4 Q* r% h) s1 _/ R7 X<p></p></div>2 W4 p/ _5 R! p+ b4 e9 L
        </div><p></p></div>
9 \2 g- d. N) M8 `$ V<hr>% B6 \; @9 T5 [( ?4 n. P
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
; J# C# X" u. a3 ~8 I+ t0 m. V<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>5 A  v; x  q0 q% P6 D) P0 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>  X! U4 I7 V2 x9 W$ X
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
# w: O3 {1 J. h/ m: N' ?- P<div class="suo-content"><div style="text-align: right;">$ t$ Q. ?8 V9 x4 c, w! D
                <div class="xControl"><i class="fa fa-caret-right"></i>
$ ~$ u( U3 @4 b8 h' v% k                        <span class="xTitle"></span> ; t: M4 I  U2 |
                        相关讨论
1 G3 z! K8 z$ G% ?& I                        <div style="clear: both;"></div>
  Y  O4 w1 z) `5 \* B                </div>
* M, v1 m8 ]" I4 e9 {                <div class="xContent" style="display: none;"><p></p>: W) U# d1 I: @2 C" [! k# o7 L
<ul>, q+ \+ }3 h2 q! T
<li>' L) }& C  A+ }2 Q; j1 n
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。6 r5 `# U. w4 h- m+ k
</li>* S3 c2 N8 k' U5 X- c/ d6 z1 w
<li>
  S# r. v1 j  e0 {: }; V/ r@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。2 ~# i7 x1 A2 Z5 T: X4 y! w9 h
</li>4 x6 _0 @+ S7 p% |& P* x3 l
<li>& d8 H7 O4 O9 r3 d  m
这对我有用,它不会改变工作目录。谢谢。
$ ^1 Y" `+ M: \8 Z( [3 l$ M# q</li>6 u7 G( N. ~, i, q6 B
<li>
2 _3 X  k4 L1 ]% ]是的,这很完美。非常感谢!
/ P8 E$ b" t6 h) d/ t: X2 X8 k2 l</li>
* M0 x* g' Q& A9 X& j8 g% ~<li>* ]# H/ t1 C- T) V3 R+ K
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>& }( S: a  P# L4 }
</ul>
4 g5 k0 o6 n9 \( X7 I" l2 j% N! C4 U8 O& c<p></p></div>
: M  C0 Q7 ^! q0 n; p        </div><p></p></div>
2 _. o  W# h6 F/ R8 u' b; w<hr>
2 U0 q# z/ K  u% m<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
  c  K: [" j2 S4 f+ P; x9 `<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>" g6 s4 _4 g# J
<p><center> </center></p>
* q& A0 L" N- t: ?8 z<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>0 R* h3 e! _- j  t+ [" U7 E5 w
<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>2 T* w. q7 Z/ K3 h! D5 J
<div class="suo-content"><div style="text-align: right;">
& N7 F+ Z- g7 j4 ^0 c                <div class="xControl"><i class="fa fa-caret-right"></i>$ T, S' e4 G  j5 X  \
                        <span class="xTitle"></span> + d8 r+ S/ V. n8 Q3 o5 d! ~9 K  B
                        相关讨论
/ s0 [- q3 U: g) K                        <div style="clear: both;"></div>
# S7 X1 p8 @3 U. m0 I5 x! s* z6 M                </div>
) X: f/ l5 Q- x1 q" L# D" d                <div class="xContent" style="display: none;"><p></p>
9 O4 `, R' v- A/ }2 G  X% I, L. G<ul>
* N. ~% E' Z# T<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.
% Y4 w7 T3 |# F( N. i2 Z: L3 G4 O</li>
9 l7 f( C8 i' x# u: v<li>
& ^! k6 k  j# x! D链接现在失效了。0 Z$ z: b' N; x& u7 x+ y
</li>  s/ m) R2 f' w- ]
<li>4 x! z3 `. K! R/ V* j8 y& k
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...! u. n+ b, _! P
</li>
4 t( Q; j' `8 J0 B1 d6 \</ul>7 q2 e3 R# L! s9 o% L
<p></p></div>3 m! @$ x2 [3 B" s  g3 J; }
        </div><p></p></div>
2 A% C  \$ [3 c& L# ?5 f$ ^% ^<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2025-6-16 06:14 , Processed in 0.061072 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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