飞雪团队

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

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

[复制链接]

8993

主题

9081

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29309
发表于 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>
5 X7 Z6 b# ?% `! Q- ?3 n<div id="fc">
8 e; v9 T9 u1 o' L9 h<p><center> </center></p>0 R$ O( x4 M" F9 A; m9 A
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
% ?( V3 X1 E3 k1 m7 p<div class="suo-content"><div style="text-align: right;">
; r& u+ E* J, t8 t2 n                <div class="xControl"><i class="fa fa-caret-right"></i>& r/ ?! T( T6 |( }/ {
                        <span class="xTitle"></span> 9 v. N: `, U& h- h& F0 b8 l  r9 o" ^
                        相关讨论7 s7 s+ T  p  b$ V$ t" J/ f( M; \5 O
                        <div style="clear: both;"></div>
- f" E* w4 n+ ^, U+ O5 T6 P" m                </div>; ^0 o1 v0 U* l5 I/ s
                <div class="xContent" style="display: none;"><p></p>
: v8 n6 n6 u/ k5 Y  c<ul>
8 q& [% `# Y+ c+ @3 {8 _0 e! l; f5 M<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>% c: }5 c# L8 }0 m  W+ o  \
</li>
  F! c' O9 z; [<li>
+ g! ~" N4 C4 T" b) t* y8 f, N另见:github.com/ropenscilabs/ezknitr</li>- d9 e# B) p2 u! _* ^
</ul>
( L0 k+ }; j( D# _<p></p></div>
1 S5 Q7 T, X9 _% F% U1 e        </div><p></p></div>8 H) j2 [% C% h& ?
<hr>( z* G/ P; s- c" @5 W2 {
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
) z  a" \4 K4 e& v<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>/ A# Y+ p& a1 P) }
<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>
( o( @4 G! Y2 ^3 z7 a4 F' J  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>. |; L3 F) j7 y. v
<div class="suo-content"><div style="text-align: right;">" C. T" J1 w" Q# }" [1 [
                <div class="xControl"><i class="fa fa-caret-right"></i>
/ r* s2 r5 p, Q7 p  e                        <span class="xTitle"></span> - E- l' N1 P) _. {6 l% i
                        相关讨论+ E. t/ Z; k( H0 m7 j
                        <div style="clear: both;"></div>1 `% D( _& B9 O9 U7 t8 ]1 N
                </div>! s- Z8 Z. m) t; ]) K, C1 a$ h
                <div class="xContent" style="display: none;"><p></p>1 p) C/ e; J; H, M9 |( H# D1 ^
<ul>
& ~. }3 Z& z1 U# s! d. L4 c! y<li>
; \! m6 d# W) `* R8 H3 @( L' V$ w这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。2 v2 w4 D  c) U' E
</li>
0 b% W" S8 H& I$ K% ]' m* S9 }$ s<li>
0 v$ Y& j* w% v/ k/ |3 W@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。" t% f3 X0 w: E' \2 y
</li>1 m4 v1 P5 ~/ n+ l1 {
<li>, L. E" u9 n6 }6 L
这对我有用,它不会改变工作目录。谢谢。
7 J8 l! J0 z( p0 F</li>% Y1 s& v9 {$ q8 d$ ?
<li>
9 d2 C4 h$ I) F8 u! p, S是的,这很完美。非常感谢!' s# O. m, v8 h. {8 m; ^6 N! U! j
</li>
( T' }6 }6 a3 R( j( E2 L3 D# m<li>
5 u6 ^8 m  Q7 K# w@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>
( ~5 r4 o/ ?7 d+ F</ul>1 K3 ~! W  i4 k8 [
<p></p></div>
" c, _8 f0 O6 F: S. H, N- y  A        </div><p></p></div>
" b0 d  b  c% o. Q* N1 m<hr>7 X: H5 L" f0 f
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
9 m* n& V0 y  Y1 s6 @<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
  d5 b* H& \) |3 X6 Q<p><center> </center></p>5 M% A* b: r& k
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>! u9 L* t6 n0 H9 P
<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
) @- d0 Y" Y0 s" W<div class="suo-content"><div style="text-align: right;">$ ~9 p: \  L' y) f$ G' J% T4 T
                <div class="xControl"><i class="fa fa-caret-right"></i>! |% d6 ~4 M5 Q4 w$ s
                        <span class="xTitle"></span>
+ g* |) s3 R8 t0 I1 Z6 z- N7 O- H# I                        相关讨论
/ ]8 U) U3 A1 d4 e* z$ \6 _: q0 `                        <div style="clear: both;"></div>
9 k1 m) J5 w6 c7 g. l* _                </div>
, p4 ]! {' r9 R7 |( S                <div class="xContent" style="display: none;"><p></p>7 P" ~0 G# v) R" |
<ul>- G. E4 W" [% \$ g  `5 e1 V4 B- z  c
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.
! m5 K; V* X1 S' a- t</li>- h9 Z: J- u' w0 R' [
<li>7 v# G) J& {' Q6 Y( ~
链接现在失效了。* H( h6 q. l$ D6 A: u
</li>
" e: b' C' N" I) v- }<li>
0 [, x9 e  e, S, e8 M# Q这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...! v! g9 X. c2 O9 S
</li>
3 L, M/ b1 Q" c+ s% d6 [2 i; x</ul>
' y% M6 f7 l/ k. b. Q<p></p></div>
: S  N8 H# ~% t( A/ g9 c% I        </div><p></p></div>
; i9 i5 A9 J2 Y' [  @4 s2 R<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-7-12 07:21 , Processed in 0.626047 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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