以编程方式设置环境变量

flo*_*del 13 r environment-variables

在R中,我可以"手动"设置环境变量,例如:

Sys.setenv(TODAY = "Friday")
Run Code Online (Sandbox Code Playgroud)

但是,如果环境变量名称和值存储在R对象中会怎样?

var.name  <- "TODAY"
var.value <- "Friday"
Run Code Online (Sandbox Code Playgroud)

我写了这个:

expr <- paste("Sys.setenv(", var.name, " = '", var.value, "')", sep = "")
expr
# [1] "Sys.setenv(TODAY = 'Friday')"
eval(parse(text = expr))
Run Code Online (Sandbox Code Playgroud)

哪个确实有效:

Sys.getenv("TODAY")
# 1] "Friday"
Run Code Online (Sandbox Code Playgroud)

但我发现它很难看.有没有更好的办法?谢谢.

Dav*_*son 17

您可以使用do.call该命名参数调用该函数:

args = list(var.value)
names(args) = var.name
do.call(Sys.setenv, args)
Run Code Online (Sandbox Code Playgroud)


G. *_*eck 6

试试这个:

.Internal(Sys.setenv(var.name, var.value))
Run Code Online (Sandbox Code Playgroud)

  • @flodel:参见[CRAN Repository Policy](http://cran.r-project.org/web/packages/policies.html):"CRAN包应该只使用公共API ..." (3认同)
  • +1,但不要在包中执行此操作,因为它违反CRAN策略. (2认同)