飞雪团队

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

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

[复制链接]

5344

主题

5432

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
18354
发表于 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>
, t. `! Z& @5 L4 a<div id="fc">5 t6 Z. L% d1 q" w; S
<p><center> </center></p>
) y4 b: H( o6 C7 L! l<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
' a9 H* @1 `% T+ [  D<div class="suo-content"><div style="text-align: right;">
, \0 f% g5 i& T! a                <div class="xControl"><i class="fa fa-caret-right"></i>
7 p% Y3 m2 h$ ^- z( P7 A1 _  y                        <span class="xTitle"></span>
% @2 L5 Z1 R4 h2 j$ V; z                        相关讨论+ o0 V( d! }, n5 X: D: u1 {" ?
                        <div style="clear: both;"></div>
& U/ H% b! [# W0 e                </div>
/ b1 w' ~$ w+ t' i; r; o0 Z                <div class="xContent" style="display: none;"><p></p>  H! ]4 l8 M! e; a9 I- K% Z
<ul>
3 Z, g4 E- J8 z% S7 W<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>/ [" T! ]; @9 l( V+ A
</li>& i, n2 e7 \% @; X; z5 t; R
<li>5 M& ?# I# [6 K/ E
另见:github.com/ropenscilabs/ezknitr</li>' L% N2 o2 I5 h, J: O$ {% v
</ul>
) |* }# ^  F/ u<p></p></div>
. i9 w+ x. d+ t7 B0 k3 P        </div><p></p></div>
$ u' }0 H+ L% t# r$ h1 @; l<hr>7 P! `8 p+ B" J6 p* ], P
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>& S6 O; W8 C+ X+ P" k. A# {  [
<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>
2 s, C3 b. K+ q, N( G# y<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>; X7 g: l$ P5 q$ f
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
! W0 w1 w( \1 M5 }) [<div class="suo-content"><div style="text-align: right;">% x  l! \6 D) B4 _
                <div class="xControl"><i class="fa fa-caret-right"></i>1 h5 g' V7 a# s+ Y) |
                        <span class="xTitle"></span> ( ^* [- b" c% f% U4 R
                        相关讨论
: ~/ R- w0 c) g0 {2 b# e                        <div style="clear: both;"></div>9 g- R' Y- Y+ t
                </div>
2 T$ U% e  M1 U8 }9 n; U9 K                <div class="xContent" style="display: none;"><p></p>4 S; j) p, _4 v
<ul>
% \. Z. C0 \) Y8 t+ g8 u<li>. e- w. G; `7 C. H5 \
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
4 G$ K  ~  h' O1 Q* t</li>
/ A; {$ @+ |. D+ {* i/ y# r6 G<li>9 r: o& _' ~9 b& X8 E
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
- O  I! v6 j8 i) h% q" i8 n</li>; i& S0 a0 I4 O$ v. g& I
<li>
6 H5 Q' p1 f) [# p  t# G. Z这对我有用,它不会改变工作目录。谢谢。/ ^8 C; @& S  z! v; C% @: H9 @& X
</li>
% ~- @5 p2 b; X4 n7 \<li>
6 r: X; P! Y% {是的,这很完美。非常感谢!
0 O- ?9 }: i& `3 |- e3 V# h</li>
, t' y9 u! S7 o- M9 @* G<li>! \6 S3 ?/ `" b* r' i' O
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>3 {. T8 T+ ?* I4 w/ l1 y
</ul>
, T9 X/ d% j; g+ X# _" k" A<p></p></div>
9 p" H5 Q2 B4 W1 m. I# H5 ?* q- ]        </div><p></p></div>
/ O8 L" \" X. |7 K! t& R) E1 X, ^<hr>! J% p( p' h8 Q* F
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>; f- S  h2 m. r5 e# C4 G) D( O
<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
) B, V( N2 ?, y  J<p><center> </center></p>
- L5 L; m% h9 V% a<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
, b9 |9 ?( J3 Q+ g6 h<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
9 d- P; s/ [& v9 m) u9 g7 P4 ?& p<div class="suo-content"><div style="text-align: right;">
3 s3 k* K5 A; |! I. K; b  X9 [                <div class="xControl"><i class="fa fa-caret-right"></i>5 f' m: I+ f1 V% _" W7 Q* P4 J
                        <span class="xTitle"></span> / N0 Q' }' j+ C" T2 g# {
                        相关讨论: \+ X6 u- i7 w8 J
                        <div style="clear: both;"></div>3 ^% |$ ?8 Q( O5 h# L1 ^
                </div>
$ M0 n; }- c- w/ R8 @4 |2 n                <div class="xContent" style="display: none;"><p></p>  F- A' v! D# o4 T1 A2 i$ _5 J$ t  \
<ul>$ a" `, D" D. B8 [
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.9 U: d7 l2 ?3 q9 Z+ G" d
</li>7 l; k3 @2 H9 q% K; v
<li>
- Z" T5 Y! Y) F  v1 T9 A链接现在失效了。* K7 o; W6 i3 _4 b: a4 N
</li>/ `0 [# V4 b  T+ k) U
<li>  a, g/ f3 U; {. b9 @% V! U$ B
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...
; Q0 _, X' O# N4 T1 [5 g+ l</li>
0 P. L0 X  t1 s; Z' d</ul>) J9 q* G3 T) X0 W$ X: p2 ]" P
<p></p></div>
0 S- F, l+ U' f, ^        </div><p></p></div>
2 I1 h0 m9 W( H5 T: @1 |<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2024-11-24 05:47 , Processed in 0.080405 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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