39

我在 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
4

5 回答 5

32

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

write("TMP = '<your-desired-tempdir>'", file=file.path(Sys.getenv('R_USER'), '.Renviron'))
于 2013-06-14T12:19:24.043 回答
6

在 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-答案在您提到的链接之一中。

于 2017-12-06T07:39:44.560 回答
5

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

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

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

于 2018-09-12T21:05:57.377 回答
1

我有一个类似的问题。就我而言,上述解决方案不起作用。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 变量。它对我有用。重新启动后,R 将按照 Windows TMPDIR 的指导指向新的 tempdir()!

于 2020-02-10T13:53:31.457 回答
0

对于那些来这里促进 R 单元测试(例如,使用testthatortinytest包)的人,您可以使用以下命令更改为可重现工作流的临时文件夹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))
})
于 2022-01-03T21:16:57.733 回答