飞雪团队

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

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

[复制链接]

8240

主题

8328

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
27050
发表于 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>
! {, H; D- i6 ]. F3 ~4 b<div id="fc">
0 J5 @2 D  n+ ?9 p) i0 \( X; F, n  Y<p><center> </center></p>  M) P1 c- O1 k# C4 u
<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>3 w- y1 U& e2 z! j" I7 j
<div class="suo-content"><div style="text-align: right;">  m. M% Z, P9 ~1 {% M
                <div class="xControl"><i class="fa fa-caret-right"></i>
* z# Q8 o; t4 l9 Q                        <span class="xTitle"></span>
( q2 c1 E& E4 I6 n* M2 p                        相关讨论
4 ]+ a: z' u- f2 X                        <div style="clear: both;"></div>  W7 C( z4 R8 d
                </div>4 n$ r& p( k) ^$ p
                <div class="xContent" style="display: none;"><p></p>3 e1 w8 M3 W  R1 c/ k: W1 V
<ul>
/ H" s7 C; m, }9 I$ P$ H* o<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>" B/ t0 a+ m0 F) u1 `# L
</li>9 g- e/ `6 e! E; d1 n* T
<li>
  {3 ^9 F& n) x* j2 {: L& D另见:github.com/ropenscilabs/ezknitr</li>
. X; a( P) W! G5 Y* z6 M</ul>
( D. x8 p# ]# O# ~<p></p></div>4 @0 {3 c! Z2 }, I+ @6 _  ]7 _
        </div><p></p></div>. L' @, T$ d$ i* I3 R* q: K9 [( C
<hr>( S  |; r0 m& L( I! s
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>
& q. ]8 k: F7 i+ x3 S' Y<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p>
) l1 s; W4 ~# Y4 A8 n<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>
. I! G7 [; e& u3 v$ G" P  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>, k; p- N$ [" ]4 Y7 c. `, X: j
<div class="suo-content"><div style="text-align: right;">4 K( h9 m/ u, x  Y) F- _
                <div class="xControl"><i class="fa fa-caret-right"></i>
1 C8 g; J- e0 j; a                        <span class="xTitle"></span>
" K: o( ^" j5 i+ O& X                        相关讨论/ D3 h3 Y8 x! o- V/ S
                        <div style="clear: both;"></div>2 ^- L8 L5 q! K8 Z
                </div>
" P. Y8 p  a) A" N+ x                <div class="xContent" style="display: none;"><p></p>% n4 J: j0 i( L5 C4 A& P7 ^6 M
<ul>0 C/ i$ |' Z! i& |
<li>
) X7 H/ G% E7 }5 E这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。
% H: K: l$ w5 {% _+ A5 K$ b</li>2 t. @# B- b. X
<li>9 W% ?, u7 ?: D" M% y* S
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
0 ^) ?9 L& D) f8 c" G" a5 }</li>
3 b- ^3 H( e1 \5 Y<li>1 k) {: H. h& P) P
这对我有用,它不会改变工作目录。谢谢。
" Y5 O8 m, U' W5 @</li>
0 @1 X- y1 ^8 K0 P6 h5 Y; f3 b, Z( l<li>
& z2 q1 z# @) ?$ z是的,这很完美。非常感谢!
# U6 z- f) {' {( q1 X7 s- d0 k</li>
9 n  X' [5 {& C<li>/ K- G9 s5 l  u; \5 V7 B
@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>' P# l5 [: U4 K8 K1 [$ n: Q
</ul>2 G8 D8 S# D2 A1 T
<p></p></div>
) X7 l6 [9 W, g2 J8 l* H0 n        </div><p></p></div>
6 Q  k) r6 b3 y1 w  `<hr>. [2 \' V$ g1 b9 a1 ~5 L; F
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>
2 z6 z4 M% P! R6 i# H<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
- q# K3 q, e* m" b6 W6 l3 N& A  c<p><center> </center></p>) o5 z* x: l! \& y6 Z
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
/ c& o5 E1 W" Z0 T<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>9 R) x8 h$ N% {" }
<div class="suo-content"><div style="text-align: right;">
& E  R$ y; `) @1 N; V% c                <div class="xControl"><i class="fa fa-caret-right"></i>, X7 G& }& _3 D, H9 G0 F8 ^
                        <span class="xTitle"></span>
! j1 p% ?. B& |9 P' A8 U# E( Z                        相关讨论" m, q5 L3 F- `
                        <div style="clear: both;"></div>
8 W3 L5 p, `- U: g/ Z$ B" S/ e                </div>% n# z& w5 m, h; o; i
                <div class="xContent" style="display: none;"><p></p>6 |: z4 X. }6 w6 m$ j
<ul>
' B  h- i! f$ A' ]6 v8 w<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.
8 e: z) p& {4 t; h: ^$ L</li>' U( V0 u: n, }( [( u9 q
<li>! Y7 d' e/ h3 C$ r4 g
链接现在失效了。
" h$ r* u  N* @! G( s</li>
( E/ c! y$ U' `9 k$ S; T/ J<li>! h5 \3 Q& T5 U
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...$ G$ z& D7 F4 \; c# G3 h) T& s
</li>5 r2 H* A+ b. t( }4 u0 @. G7 k
</ul>
8 t( S  d& d, V$ W1 S<p></p></div>
" o9 n0 h: t. G* A        </div><p></p></div>+ ]" [* \% U, X- l" o2 i7 S/ f4 ]1 I
<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-1-13 08:07 , Processed in 0.062129 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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