【问题标题】:What is the best way to create the user library directory set in .Renviron?在 .Renviron 中创建用户库目录的最佳方法是什么?
【发布时间】:2019-12-16 03:51:25
【问题描述】:

我正在努力寻找为我的团队设置 R 的最佳方式。因为我们的机构在网络共享上拥有用户主目录,所以 R 用户库默认为此网络共享。 经过一番研究,我发现在 .Renviron 文件中设置 R_LIBS_USER 是最有用的(如rstudio forums 中所述) 如同一篇文章所述,安装新版本的 R 后它不会自动创建此目录,因此 .libPaths() 默认为 C:/Program Files/R/../.. (忽略 R_LIBS_USER)

在下面的问题中,同样的问题是在 6 年前提出的。接受的答案没有帮助,因为它建议制作一个与版本无关的用户库。我不想在我的库中使用这些旧包。 Why do I have to create the directory "~/R/%p-library/%v" by hand on each R upgrade?

我也尝试在 .Rprofile 中设置 .libPaths,但使用 .Renviron 文件感觉更高效,所以我更喜欢使用它。这也允许用户在他们的项目中使用他们自己的 .Rprofile 设置。

我目前的工作方式是:

  • .Renviron 文件R_LIBS_USER=C:/Users/[user]/R/%p-library/%v
  • 每个用户在新的 R 安装后调用这个命令dir.create(Sys.getenv('R_LIBS_USER'), recursive = TRUE)

我想知道自动创建 R_LIBS_USER 文件夹的最佳/最干净的设置是什么,因此重新安装 R 不需要任何可能被用户忘记的手动操作。

【问题讨论】:

  • 使用Rprofile文件有什么问题?这是我们为我们的团队做的最简单的方法,我们只需输入.libPaths("C:/R/R-3.6.1/library")
  • 这并不能解决我的问题,因为当目录不存在时,它也不会创建目录。我希望路径是动态的(带有版本号)。链接的问题说在 rprofile 中使用 dir.create() 不是最佳实践。我想知道是什么。
  • 是的,这很有意义。

标签: r library-path r-environment


【解决方案1】:

您可以在安装 R 之后编写一个小的 powershell 脚本来运行,该脚本将创建您喜欢的任何目录/文件。可以在here 找到一个简单的示例 - 只需调整代码以包含您喜欢的任何环境变量。

一个简单的例子

将以下代码行放在一个文本文件中,并使用.ps1 文件扩展名保存它(或者如果你想测试它,只需将代码直接复制/粘贴到 powershell 提示符中)。

Add-Content c:\Users\$env:USERNAME\Documents\.Renviron "TEST_VARIABLE_1=my_username"

上面的代码行将在指定的目录中创建一个名为.Renviron 的文件,并将环境变量TEST_VARIABLE 附加到该文件中(因此它以标准方式通过.Renviron 加载到R 中)。

显然,您可以以相同的方式添加尽可能多的变量(只需复制代码行以包含您喜欢的任何环境变量)。

您还可以轻松地将.Renviron 文件的位置调整为您想要的任何位置,包括网络驱动器。

还请注意,您可以轻松地在 powershell 中创建目录(而不是文件)like so

例如

New-Item -ItemType directory -Path C:\Scripts\newDir

【讨论】:

  • 您好,谢谢。安装(运行脚本)后仍然需要手动操作。我的问题是每个用户都应该在安装新的 R 版本后运行它。我现在这样做的方法是要求用户在 R 中运行它:dir.create(Sys.getenv('R_LIBS_USER'), recursive = TRUE) 我正在寻找一种自动方法来识别该文件夹不存在(可能在 R 启动时),并在需要时创建它。
  • @Jelger 我明白了。我认为除了安装 R 以创建目录之外,您总是需要做一些事情(因此您当前的解决方案可能已经尽可能自动化)。如果您想一次性完成 R 安装创建目录,您可以使用powershell script to install R,并在该脚本的末尾添加一行来创建所需的目录。我怀疑在安装 R 版本时创建目录就足够了?
猜你喜欢
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2010-10-09
  • 1970-01-01
相关资源
最近更新 更多