Rscript使用C:/temp文件,即使TMP和TMPDIR设置为另一个驱动器

Rscript使用C:/temp文件,即使TMP和TMPDIR设置为另一个驱动器,r,R,My.Renviron文件指定 TMP = 'F:\temp' TMPDIR = 'F:\temp' 在RStudio中,我得到了以下结果: Sys.getenv("TMP") [1] “F:\temp” [1] “F:\temp” 这一部分应该是这样的。我在F:/上有1 TB的可用空间,在C:/上有不到50 MB的可用空间 但是,当我通过Rscript作为计划任务运行脚本时,它总是会失败,因为它会以某种方式恢复为尝试使用C://作为临时文件,并耗尽空间 我怎样才能解决这个问题 在当前用例

My.Renviron文件指定

TMP = 'F:\temp' 
TMPDIR = 'F:\temp'
在RStudio中,我得到了以下结果:

Sys.getenv("TMP")
[1] “F:\temp”

[1] “F:\temp”

这一部分应该是这样的。我在F:/上有1 TB的可用空间,在C:/上有不到50 MB的可用空间

但是,当我通过Rscript作为计划任务运行脚本时,它总是会失败,因为它会以某种方式恢复为尝试使用C://作为临时文件,并耗尽空间

我怎样才能解决这个问题


在当前用例中,临时文件的主要用户是来自包
sas7bdat.parso
fread.sas7bdat.parso
。我试着在那个函数调用中设置
tempfile=(“F://temp”)
,但没有什么不同。

通过系统属性的环境变量选项卡设置它们系统范围内的,以便在R启动之前设置它们。这就是Rstudio所完成的:它在启动底层R进程之前作为GUI/IDE运行

说明:

edd@max:~$ TMP=/opt TEMPDIR=/src Rscript -e \   # line broken for display only
                       'print(Sys.getenv("TMP")); print(Sys.getenv("TEMPDIR"))'
[1] "/opt"
[1] "/src"
edd@max:~$ 

这个演示是在Linux上进行的,但概念是相同的。

是否有创建临时文件的特定函数?你到底在做什么导致临时文件被创建?@MrFlick它是
fread
。事实上,在这种情况下,它特别是
fread.sas7bdat.parso
,但我做了一些实验,我相信它更普遍地是
fread
。我尝试在
fread.sas7bdat.parso
语句中设置
tmpfile()
内联,但没有任何帮助。这似乎有效,谢谢Eddelbuettel先生。似乎几个月前我设置了这些变量,一些SAS用户决定将它们更改回来。请让我知道,如果你有什么建议,我应该做什么,当我发现他们是谁+1请不要在未经我同意的情况下编辑我的问题,或至少将其标记为您编辑的问题。现在看起来好像是我写的,我没有写,所以我更愿意还原它。谢谢。如果您觉得有必要添加(咳嗽)截图,请随时将其添加到您的问题中。谢谢。但这是答案的一部分,与linux命令行示例相比,它更接近Windows的正确答案,不是吗?请允许我决定答案的一部分。
edd@max:~$ TMP=/opt TEMPDIR=/src Rscript -e \   # line broken for display only
                       'print(Sys.getenv("TMP")); print(Sys.getenv("TEMPDIR"))'
[1] "/opt"
[1] "/src"
edd@max:~$