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

rmarkdown.rmd文件中的Rstudio文件名完成,r,rstudio,r-markdown,R,Rstudio,R Markdown,在Rstudio版本(1.0.143)中 我正在使用一个Rstudio包项目,并在其中使用Rmarkdown。所有代码文件都在./R文件夹中。所有数据文件都在./data文件夹中。默认的getwd()是父文件夹。/(包含./R和./Data) 我在RStudio中使用文件完成工具,我认为它非常有用。但是在.Rmd文件中,它并没有像预期的那样工作。例如,以下是两种情况: 在.R文件中,包含在./R文件夹中。我打开括号和 相对于getwd() 文件夹(即父文件夹)。因此,./R中的文件“hello

在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()
    给出了父级“/”,但 在./R中完成文件“hello.R”会得到“hello.R”

这是一个已知的bug还是一个特性

> 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

RStudio文件名完成基于当前工作目录,即您自己识别的
getwd()

编织Rmd文件时,包含Rmd文件的目录用作工作目录。因此,当在
/R
中找到Rmd文件时,它将成为您的工作目录

最简单的解决方案是在开发Rmd文件时将工作目录更改为
/R

有一些选项供您调查。RStudio使用rmarkdown包中的
渲染
。例如,参见
?rmarkdown::render
;查看
knit\u root\u dir
。 您的knitr文档也可以通过以下方式获得:

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

编辑:RStudio(v.1.0.136)似乎足够聪明,能够识别knitr文档将基于其目录编制,因此使用该目录的自动完成,而不是
getwd()

RStudio文件名完成基于当前工作目录,即
getwd()
正如您自己所确认的

编织Rmd文件时,包含Rmd文件的目录用作工作目录。因此,当在
/R
中找到Rmd文件时,它将成为您的工作目录

最简单的解决方案是在开发Rmd文件时将工作目录更改为
/R

有一些选项供您调查。RStudio使用rmarkdown包中的
渲染
。例如,参见
?rmarkdown::render
;查看
knit\u root\u dir
。 您的knitr文档也可以通过以下方式获得:

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

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

,这是我的想法,但在我的情况下并不正确。在Rstudio中的包项目中,包含文件的主目录是“/R”,而
getwd()
文件夹是“/”。如果.Rmd在“/R”中,当我运行块时,
getwd()
文件夹是“/”。另外,当我编织它时,
getwd()
文件夹也是“/”!只是完成的过程被搞砸了。对于每个自动完成文件名,我必须添加“../R”,以便该文件编织或运行所有块。我认为你所说的可能以前是真的,但现在不再是我的Rstudio版本(1.0.143)——这很好。在包项目中,
getwd()
仍然可以是任何东西。RStudio默认为包根目录。根据我的经验,对于R文件,RStudio将文件完成基于
getwd()。让我尝试将Rmd文件移动到其中一个文件夹。也许那样我就不会有问题了。有人找到办法解决这个问题了吗?我有一个Rmd文档位于./code中,但是通过开头块中的一行将其wd设置为根目录(.):knitr::opts_knit$set(root.dir=“..”),但是,当在Rmd文档中写入文件时,如果用tabout查找文件,它仍然坚持在./code目录中启动,即使控制台的工作目录设置为根目录。在RStudio IDE设置中以某种方式设置它会很好。对不起,我之前的评论太仓促了。“./”是指父目录。这是我的想法,但在我的情况下不正确。在Rstudio中的包项目中,包含文件的主目录是“/R”,而
getwd()
文件夹是“/”。如果.Rmd在“/R”中,当我运行块时,
getwd()
文件夹是“/”。另外,当我编织它时,
getwd()
文件夹也是“/”!只是完成的过程被搞砸了。对于每个自动完成文件名,我必须添加“../R”,以便该文件编织或运行所有块。我认为你所说的可能以前是真的,但现在不再是我的Rstudio版本(1.0.143)——这很好。在包项目中,
getwd()
仍然可以是任何东西。RStudio默认为包根目录。根据我的经验,对于R文件,RStudio将文件完成基于
getwd()。让我尝试将Rmd文件移动到其中一个文件夹。也许那样我就不会有问题了。有人找到办法解决这个问题了吗?我有一个Rmd文档位于./code中,但是通过开头块中的一行将其wd设置为根目录(.):knitr::opts_knit$set(root.dir=“..”),但是,当在Rmd文档中写入文件时,如果用tabout查找文件,它仍然坚持在./code目录中启动,即使控制台的工作目录设置为根目录。那就是尼克