繁体   English   中英

如何设置“ path.expand”从我的工作目录开始?

[英]How can I set `path.expand` to begin at my working directory?

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

path.expand ('〜')

[1]“ /Users/my.name”

我想将其更改为以下内容:

path.expand ('〜')

[1]“ /用户/我的名称/驱动器/ R /项目/子文件夹”

我该怎么办?

谢谢。

在所有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上显然效果不佳...这不是unix-y!)

因此,您可以尝试使用以下任一方法覆盖它:

  1. Sys.setenv(HOME = "/Users/my.name/drive/R/project/sub.folder") ,或
  2. 在启动R之前,请在工作环境中设置HOME变量。

这可能会产生意想不到的后果。 例如,R查找~/.Rprofile ,而git和命令查找~/.gitconfig等。

我建议的超前方法是定义一个变量并在那里进行更改。 如果使用RStudio,则其“项目”始终可以在正确的目录中启动。 如果没有,并且您仍然希望此“特殊目录”可用,则可以将其添加到您的/Users/username/.Rprofile (在“实际” homedir中)

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

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

无需更改HOME目录即可轻松引用文件的一种方法是使用here包。 这基本上是使用启发式方法根据脚本的位置找到正确的工作目录。 通常,它会查找RStudio Project文件( .rproj )或.git文件(如果您的工作目录是git存储库)。 它易于使用,对于移动的机器或意外使用setwd ,甚至忘记在其他机器/配置文件上设置HOME。

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

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"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM