[英]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!)
因此,您可以尝试使用以下任一方法覆盖它:
Sys.setenv(HOME = "/Users/my.name/drive/R/project/sub.folder")
,或 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
,其中project
是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"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.