【问题标题】:Change temporary directory更改临时目录
【发布时间】:2013-06-14 11:14:49
【问题描述】:

我在 Windows 上使用 R,需要更改存储 tmp 文件的临时目录。

我在这里、R-help 等中检查了一些答案,但没有人在工作。

我尝试了一些链接:hereherehere

在尝试了这些答案之后(我不得不说我没有完全理解它们的意思), tempdir() 仍然是默认设置,尽管我尝试了不同的方式。

任何人都可以给出如何做到这一点的详细示例程序吗?

我的会话信息:

R version 2.15.2 (2012-10-26)
Platform: i386-w64-mingw32/i386 (32-bit)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_2.15.2

【问题讨论】:

  • 你链接了这么多方法,但只提到它们没有效果。您能否提供您的详细代码您如何尝试更改临时目录以及错误消息(如果有)是什么。
  • 很抱歉,在阅读下面的答案之前我尝试了很多东西,我不想列出那么大的清单......无论如何,Mattew Plourde 指出了完美的解决方案。

标签: r tempdir


【解决方案1】:

Sys.getenv('R_USER')给定的目录下创建一个名为.Renviron的文件,并用TMP = '<your-desired-tempdir>'这一行保存。

write("TMP = '<your-desired-tempdir>'", file=file.path(Sys.getenv('R_USER'), '.Renviron'))

【讨论】:

  • 不应该将变量称为TMPDIR 而不是TMP,因为TMPDIR 具有更高的优先级(如果设置)?
  • 太好了,完全是完美的解决方案。正如 Beastfield 所说,在您的回答中,我将 TMP 更改为 TMPDIR。无论如何,它有效!非常感谢!
  • 我意识到这个问题与 windows 有关,但对于遇到这个问题的 linux 用户来说:您可以将 .Renviron 文件放入您的主文件夹。
  • 澄清一下,&lt;your-desired-tempdir&gt; 应该逐字输入,还是表示我应该自己选择一个目录?
【解决方案2】:

在 Windows 中,对我来说有效的是创建一个名为 Renviron.site 的文件并用

填充它
TMPDIR=E:/rtemp 
TMP=E:/rtemp 
TEMP=E:/rtemp

其中 E:/rtemp 是我想要临时文件的目录的路径。 因此,您创建一个新的文本文件,用上面的内容填充它,并将其名称(和扩展名)更改为 Renviron.site。

把它放在R的安装目录,目录etc中(例如C:\Program Files\R\R-3.3.2\etc)

显然,您需要重新启动 R Studio 才能使更改生效! (我使用 R studio,但它也应该在 R 中工作)。

对我来说,这个更改允许我运行一个物种分布建模脚本,该脚本在系统分区上创建非常大的临时文件,占用所有空间并最终终止进程。我已将临时文件移动到 USB SSD 磁盘(分区 E:),瞧,它工作了。

PS - 答案在 links you mentioned 之一中。

【讨论】:

  • 答案在其中一个链接中,但您的解释要好得多!为我工作。
【解决方案3】:

对于 Linux,我使用的是 Ubuntu 18.04.1 LTS。您可以尝试以下行:

write("TMP = YOUR_PATH_VARIABLE", file=file.path('~/.Renviron'))

说明:这一行会将已分配给您自己的临时路径的 TMP 变量写入“.Renviron”文件。这个“.Renviron”文件将在你的主目录中创建。 如果这不起作用,请重新启动您的 R 或 R 工作室。原因是临时目录是在当前 R 会话之前创建的。所以你必须重新启动另一个 R 会话来实现这个新的 TEMP_PATH 配置。

【讨论】:

  • 谢谢!使用TMP=/home/user/mytmp 创建/home/user/.Renviron 解决了/tmp 填充问题(它们位于不同的分区上)
  • 谢谢!这是唯一对我有用的建议。
【解决方案4】:

我遇到了类似的问题。就我而言,上述解决方案不起作用。 Rcpp 在编译时仍然使用 tempdir()。这是因为我的默认 TEMPDIR 使用的是我的 Windows 用户文件夹,我的用户名中有波兰语字母,而 R 不喜欢它。

我发现必须在运行 R 之前设置 TEMP、TMP 和 TMPDIR: https://cran.r-project.org/web/packages/startup/vignettes/startup-intro.html

这应该在系统中完成。我使用了以下说明: https://answers.microsoft.com/en-us/windows/forum/windows_7-files/change-location-of-temp-files-folder-to-another/19f13330-dde1-404c-aa27-a76c0b450818

但我没有更改 TEMP 和 TMP 变量,而是在 Windows 中创建了一个 TMPDIR 变量。它对我有用。在 Windows TMPDIR 的指导下,R 重新启动后指向新的 tempdir()!

【讨论】:

    【解决方案5】:

    对于那些来这里促进 R 单元测试的人(例如,使用 testthattinytest 包),您可以使用 dir.create() 更改为可重现工作流的临时文件夹:

    test_that("the functions used for folder processing work", {
    
      # this will create a temp folder, but tempdir() won't let you name it:
      test_dir <- tempdir() 
    
      # this will create a folder within our temp folder, with a name of our choice:
      test_dir <- paste0(test_dir, "/hello123")
      dir.create(path = test_dir)
      
      # new folder should exist now:
      expect_true(dir.exists(test_dir))
    
      # and now the unit tests:
    
      # let's say we have a function `has_folder_named_hello123()` in our package,
      # which checks the folder structure for a folder named 'hello123':
      expect_true(has_folder_named_hello123(test_dir))
    })
    

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 2013-06-08
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多