飞雪团队

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

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

[复制链接]

8915

主题

9003

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29075
发表于 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>
- r) G+ M# r9 T) J* q3 D<div id="fc">
; b3 E4 l* h. l+ }! x<p><center> </center></p>
) j# |# d( M$ Q2 M<p>我正在使用 RStudio 的 knit HTMl 函数来输出一些演示文稿。但它总是将文件输出到我当前的工作目录。如何将其输出到另一个目录,以便我的目录干净,只有原始 .rmd 文件?</p>
$ r2 F; @! Y. n( \' o5 n<div class="suo-content"><div style="text-align: right;">' P6 K+ f/ K# ^& q: e* k
                <div class="xControl"><i class="fa fa-caret-right"></i>
5 W2 p& t" z9 E7 k  E: P                        <span class="xTitle"></span> 2 |, y& c# E3 K
                        相关讨论
! @4 b9 z$ S) y( `                        <div style="clear: both;"></div>
, w3 n* ]4 f# E4 m                </div>! E4 A2 ?9 `& n: t0 R  x
                <div class="xContent" style="display: none;"><p></p>8 \- S2 J( q/ r
<ul>! T. w2 u* N& o  u
<li>您需要使用 knit HTML 按钮吗?如果没有,你可以做 <wyn>rmarkdown::render('my.Rmd', output_file = 'folder/my.html')</wyn>
+ G8 O* a" Z0 B5 I) u</li>
. x" X7 H$ z7 z7 Q, X! v" A<li>/ U7 D! S7 ?1 N( \" g% j" A) z
另见:github.com/ropenscilabs/ezknitr</li>
+ n+ n& j& r) b4 g3 T3 k! L</ul>& m' @7 K7 Y% b6 U' Q6 [+ l
<p></p></div>
4 k8 M* Z1 o+ C9 z0 H$ Y        </div><p></p></div>5 t2 _2 L7 o# P: |
<hr>" `1 `' q* ]2 I. b4 h0 m3 l
<p>Rmarkdown 中提到的将输出文件定向到目录中的技巧对我有用。</p>  P+ M! n/ Q# t! H# I
<p>示例:将以下内容添加到 YAML 前导作为顶级项,以将输出写入 <wyn>pdf/</wyn> 子目录:</p># B! P9 i# ?" X# L( ^
<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 O: z$ Q% h4 }# n  W1 k  [
  rmarkdown::render(inputFile, encoding = encoding, output_dir ="pdf") })</div></td></tr></tbody></table></div>
2 K- V3 Y" `( G& }2 c<div class="suo-content"><div style="text-align: right;">
& `# N9 v- o) B" I& u                <div class="xControl"><i class="fa fa-caret-right"></i>
  A2 e! w' `( v' W, H5 I                        <span class="xTitle"></span> - _$ }& [0 q5 K$ A+ K
                        相关讨论
" q8 I* n" k5 x0 E- T                        <div style="clear: both;"></div>
" g! c; l+ y% R+ O6 p                </div>" C& ?. w( @! [& \4 _& O6 ~7 Q
                <div class="xContent" style="display: none;"><p></p>0 c  M3 D. g0 T; o7 d* L
<ul>
% b: y( y- f4 ]<li>  I+ m) I5 N; h) R
这会以任何方式改变工作目录吗?我刚刚在我的prolog中添加了一个类似的片段(指定 <wyn>output_file</wyn>),但是当我通过编织按钮编织文档时,不知何故不再找到某些对象。当我在prolog中注释掉新行时,一切正常。+ [0 h1 {, k* Z6 \% y4 h
</li>
. u% a. ]3 R" |6 W* r( ^<li>/ q5 o1 N3 }& t: I
@stats-hb:我不知道,但是您可以使用包含显示 <wyn>getwd()</wyn> 的块的文档对其进行测试。
, r3 j( F8 D( A, r" r</li>
; |2 K2 m( g6 Q! Y( _+ y- b<li>
0 T# L' X: f4 Z; M. K( G这对我有用,它不会改变工作目录。谢谢。
2 R" `1 Q# F' X( X4 F# [4 I7 {: m</li>
4 g6 P4 h3 e- a<li>
) P. V$ J% W6 f是的,这很完美。非常感谢!# U/ f. h; `5 A# g7 ?
</li>- Y: a8 f& s: L$ H4 _- D+ J! E
<li>
# ]/ \) \) T0 b) {" M, M$ N2 s: B@stats-hb 似乎它使用了 Knitr 默认值,其中 knit 目录是 .rmd 所在的位置,即使您使用 knit 按钮旁边的下拉菜单更改了 knit 目录也是如此。我将 <wyn>knit_root_dir = rprojroot::find_rstudio_root_file()</wyn> 添加到 <wyn>render</wyn> 调用中,它可以将 knit 目录设置为项目目录</li>
5 k3 ^2 ~% V5 |# {</ul>
, L& |0 n& z' l/ e<p></p></div>8 K: I# i- N0 c* n2 s2 k
        </div><p></p></div>
( i8 j# t$ G0 a. e+ n- [<hr>4 a$ @2 d3 b4 B  P
<p>正如 Eric 在评论中指出的那样,如果您愿意放弃 Knit HTML 按钮的便利性(它会生成与您的 <wyn>.Rmd</wyn> 一起存在的 HTML 文件),您可以直接调用 <wyn>rmarkdown::render</wyn>。</p>8 ^0 I, {# \* j* L# `+ q: n+ `/ ^
<p>然而,如果你真的需要自定义你的工作流程,你可以覆盖 Knit HTML 按钮来运行你通过 <wyn>rstudio.markdownToHTML</wyn> 选项运行的任何命令。此命令可以使用特定选项(例如输出目录)调用 rmarkdown 并执行其他预处理或后处理任务。此处的文档:</p>
) w1 B( E2 |. I<p><center> </center></p>1 b; B3 y: Y2 U2 r, j- |
<p>https://support.rstudio.com/hc/en-us/articles/200552186-Customizing-Markdown-Rendering</p>
* u  G: X9 J1 {  l5 i; Y- x<p>请注意,设置 <wyn>rstudio.markdownToHTML</wyn> 选项将关闭 RStudio 中一些较新的 RMarkdown V2 集成功能,因为 RStudio 将不再能够推断正在使用什么引擎来呈现文档。 </p>
7 ]1 s) n% L% B# ^+ J<div class="suo-content"><div style="text-align: right;">
" k! J, u7 Q8 B                <div class="xControl"><i class="fa fa-caret-right"></i>' m7 t- O' J! U5 A$ w' q- ~' g
                        <span class="xTitle"></span> $ i( v; @: ?' w7 J) s
                        相关讨论
8 F9 F6 k5 \& Y& W6 `  T. Y                        <div style="clear: both;"></div>
! a. y, l& M) K3 O                </div>3 A6 ]2 g& H5 s! b) {
                <div class="xContent" style="display: none;"><p></p>: f2 y0 N- p. E6 b& M6 U! S% s: Q4 \
<ul>8 u5 Y. |% f" V
<li>我仍在为此苦苦挣扎(试图让所有中间/结果文件转到 <wyn>/output/</wyn>,我很想使用 RStudio 按钮。你能提供一个 MWE 吗?不幸的是,上面的 rstudio 文档链接是付费墙或其他东西.( }" l# I; n) [' t* _0 \
</li># \; s2 S7 ^1 l$ y; S1 a$ g
<li>5 H0 H: z8 ~- o
链接现在失效了。
7 m+ @* m5 h* J/ x. v3 D</li>" V' _) r6 e; {4 H
<li>8 w& Z' F6 o* ?& P: ?3 P& x# |
这里是存档页面:web.archive.org/web/20150920182851/https://support.rstudio.c??om/...$ }' h- ]/ d' `+ g! c# m
</li>0 A9 Q: G3 h9 `3 _3 q% V! S
</ul>$ Z+ K; l8 I3 t5 b
<p></p></div>
' X# W( L5 m( p" e        </div><p></p></div>' C. J" l9 O7 o9 ?5 i
<hr></div>
回复

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-7-1 16:38 , Processed in 0.061636 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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