在Rstudio版本(1.0.143)。
我正在使用Rstudio包项目并在其中使用Rmarkdown。所有代码文件都在./R文件夹中。所有数据文件都在./Data文件夹中。默认getwd()
是父文件夹./(包含./R和./Data)。
我在RStudio中使用文件完成工具,我认为它非常有用。但是在.Rmd文件中,它无法按预期工作。例如,以下是两种情况:
在.R文件中,包含在./R文件夹中。我打开括号和
相对于getwd()
,完成按照预期工作
文件夹,即父母。因此./R中的文件“hello.R”将完成
“./R/hello.R”
在.Rm文件中,也包含在./R文件夹中。我开始一个R块。一世
打开括号,完成不会给我“./R”
文件夹,即使getwd()
给父母“./”,
完成./R中的文件“hello.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
答案 0 :(得分:0)
RStudio文件名完成基于当前工作目录,即你自己确定的getwd()
。
编织Rmd文件时,包含Rmd文件的目录将用作工作目录。因此,当您在./R
中找到您的Rmd文件时,这将成为您的工作目录。
最简单的解决方案是在开发Rmd文件时将工作目录更改为./R
。
您可以选择进行调查。 RStudio使用rmarkdown包中的render
。参见例如?rmarkdown::render
;看knit_root_dir
。
这也适用于您的编织文档
knit::opts_knit$set(root.dir='../')
编辑: 似乎RStudio(v.1.0.136)足够聪明,可以识别出knitr文档将根据其目录进行编织,从而使用来自 目录的自动完成,而不是getwd()
。