飞雪团队

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

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

[复制链接]

7557

主题

7645

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
25001
发表于 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>
! A1 h$ U! N# b; [3 H/ J9 h& {<div id="fc">+ e7 F2 _) R, p- {7 y
<p><center> </center></p>  @7 U' Z% l4 _) w6 b" @) l/ t
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
8 q" |+ e8 _3 n7 I' S' }2 b<div class="suo-content"><div style="text-align: right;">
3 X1 n2 z5 [( \% k                <div class="xControl"><i class="fa fa-caret-right"></i>
- s9 w' T3 Q( G% s                        <span class="xTitle"></span>
& B7 Z6 k, c% f* i: o                        相关讨论
/ ]+ T! ^4 s: [+ O8 t$ k$ ?: ]                        <div style="clear: both;"></div>
7 X) q7 Z! d9 s7 ~( Q$ i7 |                </div>
7 i5 c' e  C1 E4 O3 k6 [  N9 i                <div class="xContent" style="display: none;"><p></p>9 f1 W2 x; b( ]( R+ Z" ]: V8 Z1 j2 R
<ul>
$ m3 b6 |- ?. v- l<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>
' C& `/ i, r/ e9 P; Y4 Q</li>/ V* Q3 v  h0 B
<li>
2 r% Y$ n2 d  O0 Q. E. b/ E7 \2 s另见:github.com/ropenscilabs/ezknitr</li>4 j6 B0 z- p% M/ C+ F
</ul>
4 |5 f) f# S) h! ]# D$ z1 O<p></p></div>9 P% P) g) i6 a- s& {! x& {
        </div><p></p></div>
  h) s. Z3 w  M5 l4 m<hr>0 h: d' \2 {  \0 D4 A
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
8 w+ W, H/ i+ }: x* l. y<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>
9 Z: h% |/ f3 x0 Z  H* Y7 _<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 F$ ~4 R4 O, D  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
, C! [  ~* K4 {9 K<div class="suo-content"><div style="text-align: right;">1 y% q" q4 i7 Z( U/ T2 L
                <div class="xControl"><i class="fa fa-caret-right"></i>; T+ i5 @" u( x7 W
                        <span class="xTitle"></span>
* n( F0 L$ G9 l9 t  t. d  D                        相关讨论5 O' K( K' f: [6 B. A- Y- [1 _
                        <div style="clear: both;"></div>
, ]) L0 N2 G, w0 d& q                </div>
  n7 y% B. J- K: p2 @" ~" ~9 R! H                <div class="xContent" style="display: none;"><p></p>
' m' p: {5 N9 e9 o<ul>
5 ]# f' P- c# K<li>
* k+ l( H+ o! S5 z) f) \+ E这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
3 Y3 U' v6 [$ U+ M3 `- ^</li>
* z0 A3 S. n& _) q$ p<li>8 \+ h: X4 b1 H/ l7 P
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。* n. \# e* d$ l7 z9 l) g
</li>
5 _: ?, ?! e5 Z# _0 j$ O<li>' C! H6 [# d" I' z) C7 j
这对我有用,它不会改变工作目录。谢谢。) J# c8 I9 Z5 t5 g+ a3 g
</li>
8 k  N/ }- I  K0 H% v<li>* F. S  B7 V- Y2 L1 X  g
是的,这很完美。非常感谢!) Y4 z8 `/ x: Q  z; e7 g
</li>
' y) g& S8 W) D- T) O( c<li>
7 r5 B$ k# B, m0 ?@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>
3 M. L! n5 l$ y$ _* E</ul>
4 H1 J+ C  D6 n1 N4 M" _# K8 n8 h( C<p></p></div>
& B. |$ E9 i- z% h8 }        </div><p></p></div>
8 C8 R7 ^/ {' I/ |# a5 E, S& A( `<hr>
- t( c/ L$ l  ~8 Z2 t& ?: d2 O- h<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>  ]0 l2 ?7 ?( R0 I7 q! e: v
<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>2 ~0 e6 J: c  j4 F! ?/ s  |: |( F
<p><center> </center></p>
' I# Z! {" s8 s& I<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p># c0 F7 |! {# M) w
<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>& b9 |6 u8 v; H& a3 e
<div class="suo-content"><div style="text-align: right;">, \" ~9 g! u+ I4 F0 V" z
                <div class="xControl"><i class="fa fa-caret-right"></i># O- T  k* Q9 x" u' g( j% j
                        <span class="xTitle"></span> + t4 q7 s* k% g5 w7 P0 M% j- A: c
                        相关讨论
5 z- R, r# |( w8 Y' v4 ]                        <div style="clear: both;"></div>
1 ]; N& p3 q4 E5 f                </div>
/ c  Z6 V: Z9 n  R! ]                <div class="xContent" style="display: none;"><p></p>
1 F% ^$ P2 v0 ^7 q0 E8 z) t; ~<ul>) `  u( T; G/ J
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西., Z% \  @+ l$ t. s" g. \* Z* i
</li>" N3 Z9 s' z7 \1 O0 ]' j
<li>9 M* v8 W# J9 f4 J% n  l
链接现在失效了。
; E$ P2 P. }  N2 T$ q</li>
9 v( A4 u; W) `" v# F6 I<li>; i7 c- e6 u, `/ ~- ]
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...
+ Z; \/ s  O+ M% K7 M/ E</li>
, k/ i( n' ]* }' \' R3 D</ul>
6 O- }/ u! p1 V1 |! ~5 _<p></p></div>0 d) c$ ^! G0 d: I3 J5 h4 }
        </div><p></p></div>& G' }: J& G5 I' K/ E# _
<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2025-9-15 01:59 , Processed in 0.430754 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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