飞雪团队

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

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

[复制链接]

9321

主题

9409

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
30293
发表于 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>0 i5 e; O" K0 F
<div id="fc">8 O+ W6 _. L% N3 Z+ K3 q
<p><center> </center></p>* J  m; B* f  ?" L& ~0 q, P% }
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
- P' S' B) N' a. N, A/ n<div class="suo-content"><div style="text-align: right;">/ e% Z& @  ]3 R0 w- y
                <div class="xControl"><i class="fa fa-caret-right"></i>0 P! E' |$ `& k+ q7 i
                        <span class="xTitle"></span>
9 v3 H6 [6 H0 u2 G                        相关讨论
+ E( S) U/ ~" }4 o                        <div style="clear: both;"></div>
* Y! Q6 \' N( Q% _5 B) T                </div>- o* \/ \; y$ R$ N% R3 j- g
                <div class="xContent" style="display: none;"><p></p>& e1 R$ B) [/ a2 Q" ]
<ul>! w9 z' D* g' n6 T
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>
  L5 y5 I  ~: @9 f, [0 H</li>2 `1 L0 i- P; C  h& v7 B
<li>
' j# T- p5 c  Z' d" f) `4 F另见:github.com/ropenscilabs/ezknitr</li>
9 E( w- E' ?0 v; ^3 w</ul>
5 C" Z6 j" T1 K  y0 Z  g: q<p></p></div>
" N# [* _7 O3 Q0 r3 e$ N        </div><p></p></div>5 d. j3 O$ c2 L5 e7 z! `
<hr>, B% I$ X/ [8 k5 m' O
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
- }- G1 V. w# P<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>
- M; p/ s4 g6 g$ W<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>
7 O. S; R1 V- J) @  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>0 d% ^" y/ G3 V
<div class="suo-content"><div style="text-align: right;">9 I( O' H: D% y8 w) m8 X1 L4 z
                <div class="xControl"><i class="fa fa-caret-right"></i># E4 D" _: n. Y4 ^* R
                        <span class="xTitle"></span>
% R' c# e& Q/ U2 d7 h5 ]/ |                        相关讨论
$ ^. f! V* [- A+ `+ A  J9 d) D                        <div style="clear: both;"></div>0 z# d! a6 C9 V4 @1 g" e; B* I& z& h
                </div>3 j, y. W4 }9 `
                <div class="xContent" style="display: none;"><p></p>
$ ~. U) q& A9 Q  Y3 ?5 u<ul>
  H) {1 ?! v, R; M/ _% K4 V. n<li>
4 F4 V- e/ l, }% q这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
4 \/ k1 q: _( \1 I* {</li>& B3 D- A; E! @
<li>5 X1 \' d; D9 `& L8 P. c3 n7 E& F# a
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
  |* ^7 R; U# e3 K: i</li>5 l% Z5 g8 j6 o3 }9 ], |$ n  R, B
<li>) p7 f; ^' Q* ~3 i7 w5 ]: _
这对我有用,它不会改变工作目录。谢谢。
% ]/ h# a* j, c) }- D</li>
: d8 X% P; D  Z+ T<li>
& A6 q* P8 x( k是的,这很完美。非常感谢!" B6 s( q. H1 |3 B0 u; M
</li>
# Q6 Z# C) T# ^* E% U- Y1 Y<li>6 Q  }' i. ]/ b  v1 O
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>$ ?1 z! i# O1 s/ n& l) C' D+ P
</ul>& L2 f: b7 h+ `& e
<p></p></div>3 |: x) R7 d% L+ q$ N/ J
        </div><p></p></div>: E% b7 T2 |: `* s
<hr>$ Z( j( W+ [3 x; U1 [4 d% s
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
1 X7 @, J- S0 ~5 F, O<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
3 B: U3 V9 t' g" a, h+ l& H<p><center> </center></p>
4 V- v. ?* Q! r* v* D0 Q<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
4 ?# J" Y" f; _0 h<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
4 I; n6 J8 _' O  ]: b7 q; s<div class="suo-content"><div style="text-align: right;">' s1 J( D$ l! q4 R) Z" I
                <div class="xControl"><i class="fa fa-caret-right"></i>/ C9 B5 i% x& X2 B0 s* o
                        <span class="xTitle"></span>
7 `9 W6 V7 v0 J) t+ u                        相关讨论
; g2 X; P3 H  `) K  [* {7 n' t                        <div style="clear: both;"></div>
* g& U( c; U; ~/ Y, ^+ m                </div>! T6 Z6 z; x7 X$ S/ h7 p
                <div class="xContent" style="display: none;"><p></p>* G" C  T" @/ m5 e0 W( c
<ul>+ \% V# `1 P$ c
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.$ @  P% y# X/ }8 ]: n8 @% Y
</li>
. c: ]9 S* P8 U: A<li>8 m# _7 o0 `9 c; |  D/ \3 h+ F8 k
链接现在失效了。
  F0 \5 G- m" d$ G% d</li>
7 t5 z1 s4 R6 x, u7 N<li>
/ r& @/ ]/ h* g3 a' @3 k这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...! }7 p' P6 q# @
</li>& T' a3 F1 p0 A$ L
</ul>
/ F( t7 T) x! ^8 `* n( n<p></p></div>
" s# Q; c) [, v9 g9 }) k; p3 F        </div><p></p></div>* T4 ^. s0 Y- n6 {) P- c+ _
<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-11-5 14:52 , Processed in 0.102009 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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