rmarkdown .rmd文件中的Rstudio文件名完成

gab6jxml  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(156)

在Rstudio版本(1.0.143)中。
我正在使用一个Rstudio包项目,并在其中使用Rmarkdown。所有的代码文件都在./R文件夹中。所有的数据文件都在./Data文件夹中。默认的getwd()是父文件夹./(包含./R和./Data)。
我在RStudio中使用了文件补全工具,我认为它非常有用。但是在一个.Rmd文件中,它不能像预期的那样工作。例如,下面是两种情况:

  • 在.R文件中,包含在./R文件夹中。我打开括号,完成工作如人们所期望的那样,相对于getwd()文件夹,即父文件夹。因此,./R中的文件“hello.R”将完成为“./R/hello.R”
  • 在一个.Rmd文件中,也包含在./R文件夹中。我开始一个R块。我打开括号,完成没有给予我“./R”文件夹,即使getwd()给父“./",文件“hello.R”在./R中的完成给“hello.R”。

这是已知的错误还是功能?

> sessionInfo() 
R version 3.4.1 (2017-06-30) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale: [1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages: [1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):  [1] Rcpp_0.12.12        compiler_3.4.1      RColorBrewer_1.1-2  plyr_1.8.4          base64enc_0.1-3     tools_3.4.1         rpart_4.1-11         [8] digest_0.6.12       evaluate_0.10.1     tibble_1.3.4        gtable_0.2.0        htmlTable_1.9       checkmate_1.8.3     lattice_0.20-35     [15] rlang_0.1.2         Matrix_1.2-11       gridExtra_2.2.1     stringr_1.2.0       cluster_2.0.6       knitr_1.17 htmlwidgets_0.9     [22] grid_3.4.1          nnet_7.3-12         data.table_1.10.4   survival_2.41-3     foreign_0.8-69      pacman_0.4.6        latticeExtra_0.6-28 [29] Formula_1.2-2       ggplot2_2.2.1       magrittr_1.5        Hmisc_4.0-3         scales_0.5.0        backports_1.1.0     htmltools_0.3.6     [36] splines_3.4.1       colorspace_1.3-2    stringi_1.1.5       acepack_1.4.1       lazyeval_0.2.0      munsell_0.4.3
rjzwgtxy

rjzwgtxy1#

RStudio文件名补全基于 * 当前工作目录 *,即您自己确定的getwd()
当编制Rmd文件时,包含Rmd文件的目录被用作工作目录。因此,当您的Rmd文件在./R中找到时,它将成为您的工作目录。
最简单的解决方案是在开发Rmd文件时将工作目录更改为./R
RStudio使用rmarkdown包中的render,例如?rmarkdown::render;请看knit_root_dir。这也可用于您的针织机文档,

knit::opts_knit$set(root.dir='../')

***编辑:***看起来RStudio(v. 1.0.136)足够聪明,能够识别出knitr文档将基于其目录进行编织,因此使用来自 * 该 * 目录的自动完成,而不是getwd()

cwtwac6a

cwtwac6a2#

默认的Rmd文件wd是Rmd文件的路径。尽管你可以将其改为项目目录(选项-〉rmarkdown-〉评估目录中的块:project),看来autocomplete的路径还在Rmd的路径里,就像你说的那样。我现在做的就是用终端里的autocomplete找到正确的路径,然后粘贴到Rmd文件里......虽然不完美,但已经足够好了。

相关问题