r-如何将`path.expand`设置为从我的工作目录开始



我正在使用Mac。path.expand功能是从我所需的工作目录中删除的几个文件夹。例如:

path.expand('〜'(

[1]"/users/my.name"

我想将其更改为这样的东西:

path.expand('〜'(

[1]

我该怎么做?

谢谢。

tilde在所有unix-sen(包括macOS(中,它是指操作系统认为主目录的内容(通过env var HOME(。

有两种类型的答案。可以做吗?也许,肯定。应该做吗?可能会有意想不到的后果(可能很难进行故障排除和/或解决方法(,因此可能不会。

这在我的Ubuntu框上工作:

me@mybox:/some/path$ Rscript -e 'Sys.getenv("HOME")'
[1] "/home/me"
me@mybox:/some/path$ HOME=/tmp/ Rscript -e 'Sys.getenv("HOME")'
[1] "/tmp/"
me@mybox:/some/path$ Rscript -e 'Sys.setenv(HOME="/tmp/");Sys.getenv("HOME")'
[1] "/tmp/"

(这显着在Windows上工作不太好...这不是很单独的!(

因此,您可以尝试以任何一个:

来覆盖它
  1. Sys.setenv(HOME = "/Users/my.name/drive/R/project/sub.folder")
  2. 在开始r。
  3. 之前,在工作环境中设置HOME变量

这可能会带来意想不到的后果。例如,R寻找~/.Rprofile,Git和命令寻找~/.gitconfig等。

我推荐的方法是定义一个变量并在那里进行更改。如果您使用rstudio,则其"项目"总是可以从正确的目录中启动您。如果不是,您仍然希望您可以使用此"特殊目录",也许将其添加到您的/Users/username/.Rprofile(在您的"实际" homedir中(

.specialdir <- "/Users/my.name/drive/R/project/sub.folder"

,并且,每当您需要去那里时,请使用file.expand(.specialdir)。这样的副作用是您的任何代码,函数,报告,无论使用什么,都将不再可重现。

轻松引用文件而无需更改主目录的一种方法是使用here软件包。这基本上使用启发式方法来根据您的脚本在哪里找到正确的工作目录。通常,如果您的工作目录是git存储库,则它查找RSTUDIO项目文件(.rproj(或.git文件。移动机器或意外使用setwd,甚至忘记在其他机器/配置文件上设置回家。

如果您的数据文件some_data.csv存储在/Users/my.name/drive/R/project/sub.folder/some_data.csv中,其中project是项目的根文件夹:

here::here()
[1] "/Users/my.name/drive/R/project"
here::here("sub.folder", "some_data.csv")
[1] "/Users/my.name/drive/R/project/sub.folder/some_data.csv"

,您可以将其用作路径的替换,如:

data <- read_csv(here::here("sub.folder", "some_data.csv"))

相关内容

  • 没有找到相关文章

最新更新