gpt4 book ai didi

在 R 中读取系统 TMP 目录

转载 作者:行者123 更新时间:2023-12-04 12:41:43 24 4
gpt4 key购买 nike

从 R 中查找操作系统临时目录的跨平台方法是什么?我目前使用:

dirname(tempdir())

在交互式 R session 中,它在 Ubuntu 和 Windows 上都完成了这项工作。但是,当从 RApache 内部调用时它失败了。在 RApache 中 tempdir() 的值总是 /tmp , 所以 dirname(tempdir())结果 / ,这显然是错误的。我也试过:
Sys.getenv("TMP")
Sys.getenv("TEMP")
Sys.getenv("TMPDIR")

正如 ?"environment variables" 所建议的但这些都不是在 Ubuntu 中设置的。它似乎也没有在 /etc/R/* 中的任何文件中设置。所以我不太明白 R 如何检测这个值。

最佳答案

环境变量“TMPDIR”、“TMP”和“TEMP”可用于修改tempdir()返回的值。如果 C 变量 R_TempDir未设置(虽然我不确定这是如何完成的)。如果你想要一个跨平台的函数,它会返回一个合理的 tmp 目录的路径,并且对 R_TempDir 的值不感兴趣。 ,你可以使用这样的东西:

gettmpdir <- function() {
tm <- Sys.getenv(c('TMPDIR', 'TMP', 'TEMP'))
d <- which(file.info(tm)$isdir & file.access(tm, 2) == 0)
if (length(d) > 0)
tm[[d[1]]]
else if (.Platform$OS.type == 'windows')
Sys.getenv('R_USER')
else
'/tmp'
}

这是基于函数 InitTempDir在来自 R 源代码分发的文件 src/main/sysutils.c 中,从 C 转换为 R。

关于在 R 中读取系统 TMP 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16474696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com