飞雪团队

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

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

[复制链接]

6483

主题

6571

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
21773
发表于 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>
( w% L; n) b8 y  S* n) ]<div id="fc">
# M% v# s4 w1 [' L! ^- c- k4 f4 x<p><center> </center></p>/ N: E7 Q- Q/ T1 N
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
* g' c( V; j+ L) h<div class="suo-content"><div style="text-align: right;">
% v% \+ M# W8 F3 ]" w3 Z) r                <div class="xControl"><i class="fa fa-caret-right"></i>' }& g3 t$ |8 x4 d$ o: E
                        <span class="xTitle"></span> : s7 W& |0 q$ J( z& E9 t
                        相关讨论5 h6 A! A' f1 s  U2 E
                        <div style="clear: both;"></div>1 X! j* D+ b- V8 }& |  `5 E' U
                </div>, a7 T% j) K3 x! _7 s
                <div class="xContent" style="display: none;"><p></p>: Z' w3 \' \5 a3 r" b  p
<ul>
* H" [+ T  x; t, F2 m3 h<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>1 G6 t( O$ G9 D) c; r' @
</li>
% H5 q: x  ~8 {% I; t0 y<li>
' s" E4 U8 b+ n' j, P9 D, F另见:github.com/ropenscilabs/ezknitr</li>
9 T7 _  H' r2 ^) `. V5 y5 V</ul>
# n/ v4 _) A( R% \<p></p></div>; J8 \; c6 z: F, u( G4 w
        </div><p></p></div>
. f* s4 B0 S& P+ b<hr>
8 {5 a7 }# }7 ?8 g' |% `- h) S<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
3 B* x0 v, |( B! H/ A<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>
6 p( B# I% j6 P& ?* Y5 h/ B$ f2 q7 S<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>
1 e; B0 _; Z* V5 k9 }  B0 }4 f# T  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
5 A3 Q) c3 x- R* i6 t<div class="suo-content"><div style="text-align: right;">
6 |7 _# q, C  y0 D5 S+ V3 K                <div class="xControl"><i class="fa fa-caret-right"></i>3 D; \- o  m  X! o) e9 z
                        <span class="xTitle"></span>
* S3 [* m, [- W# R5 v                        相关讨论
6 {9 |7 V. L5 Y                        <div style="clear: both;"></div>
7 V4 h) k  f+ ~: l                </div>5 m7 w& g" A: k
                <div class="xContent" style="display: none;"><p></p>
, |5 ?, g; z/ g2 T<ul>
$ Q6 h+ [4 O0 L' y9 b" P1 g: T<li>  X, a; t- P5 `/ O! Y
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
/ B: [$ F* Q( q7 w</li>2 p5 v! O2 |5 o0 l0 }  `
<li>' O% S6 H0 u, G" s6 w
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
) K/ O1 O- L2 B" v2 Q& Z# v</li>6 U6 Y5 |9 K$ y9 ?& J; q
<li>
  v4 ^6 i  `) l6 g7 n& x2 }7 T* d这对我有用,它不会改变工作目录。谢谢。5 j& O* Z) O1 j& T
</li>
0 f4 r# v% }8 [' D0 i# _<li>
3 j3 H: V+ I- ~, Z4 A是的,这很完美。非常感谢!
, E1 S3 S; `, G</li>  k, l! g4 E. ]/ N; Y; h3 H1 C
<li>
6 T/ F1 `4 r2 L@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>7 F) r/ R5 K* c4 p9 O1 S' a
</ul>& Y8 r- \, P) e* s( m0 y1 M7 L
<p></p></div>/ ^$ P; W) k" V) V
        </div><p></p></div>7 l$ c: v3 N, F/ @9 s& U
<hr>
5 H7 \8 h8 O+ Y" o<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
9 w3 {! B6 s( g4 o& u<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>! c1 f! h+ E5 S5 i* ]
<p><center> </center></p>( H0 }) b# L& B0 H3 c) E
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
; K0 d9 a7 ?: Z<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
: `6 ?4 K$ J$ ]+ z6 f<div class="suo-content"><div style="text-align: right;">1 U9 v3 |+ U5 k% a( L1 V  k
                <div class="xControl"><i class="fa fa-caret-right"></i>
+ E9 c3 z, s6 f& x0 @& A                        <span class="xTitle"></span> $ ]+ N, z8 K. p0 y
                        相关讨论
4 q; |: i3 u1 C6 O, o- T& I                        <div style="clear: both;"></div>
" a  ]* G/ j# d2 \  M7 o                </div>% h8 u" i1 c8 R) S6 \+ ~- j
                <div class="xContent" style="display: none;"><p></p>
4 ^2 O0 n2 w( y8 }<ul>
, p; `7 `2 Z' b$ U7 p& o& d: I<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西." X. @% k5 v0 r
</li>
" l! ]' O- ~2 Y<li>7 m' ]+ l$ _* z: T5 K2 T
链接现在失效了。
7 a7 ^! ]% D. ^+ a9 ?' g</li>7 f: y- ~" T" {$ d
<li>( T5 L, C+ A2 G$ ?. `
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...
" ?3 Y. A4 ?- {" F( |9 ?' `</li>
4 l' i9 t7 b6 x1 f! o% X9 z1 M8 v</ul>2 g( c  F) r" U$ B; c2 u5 ~  G
<p></p></div>
" c, c# l, k/ m" @        </div><p></p></div>
# Q6 n- n7 R) L9 D+ w<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2025-5-1 16:20 , Processed in 0.062922 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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