我正在寻找一种方法,可以在R session 开始后更改tempdir()的位置。我认为将需要更新C级全局变量R_TempDir。在R中执行此操作的一种好方法是什么?

最佳答案

更新:Simon Urbanecks unixtools package具有完成此功能的功能。代码下方(以供将来引用)。

set.tempdir <- function(path) {
  invisible(.Call(C_setTempDir, path.expand(path)))
}

C代码:
#include <string.h>
#include <Rinternals.h>
#include <Rembedded.h>

SEXP C_setTempDir(SEXP sName) {
    if (TYPEOF(sName) != STRSXP || LENGTH(sName) != 1)
    Rf_error("invalid path");
    R_TempDir = strdup(CHAR(STRING_ELT(sName, 0)));
    return sName;
}

10-07 18:27