我使用R和here包将图保存到当前工作目录中的一个文件中,如下所示:
save(plot1,
file = here::here("out2.rda"))
我的工作目录和项目的源文件位置是我的Google Drive文件夹中的一个子文件夹。我的工作目录是那个子文件夹,我通过运行setwd()
和适当的文件路径来检查这一点。
然而,有时here::here("out2.rda")
不保存到该文件夹,而是保存到我的电脑上的文档文件夹。其他时候它工作正常,并保存到我的谷歌驱动器中所需的文件夹。我不明白为什么它只在有时工作。
我如何确保它始终有效?
1条答案
按热度按时间z4bn682m1#
here::here()
决定了package load time上的工作目录/项目根目录。因此,如果在library(here)
或包中的任何函数之前调用here::here()
,则setwd()
只会影响由here::here()
决定的项目根目录。您的脚本中是否有library(here)
调用?是否可能您有时从不同的位置启动R会话(通过命令行或RStudio)?后者将影响R会话的工作目录。我建议在你的项目的根目录下有一个.Rproj文件(在你的例子中是Google Drive文件夹的子目录)。如果你在Rstudio中工作,你可以直接打开.Rproj文件,这将设置正确的工作目录。这里的包也将使用.Rproj文件来定位当前的工作目录,前提是你从包含项目文件的文件夹或它的子文件夹启动R会话。
我还可以推荐this blog post,它很好地解释了面向项目的工作流。