创建使用环境变量作为默认值的 RStudio 连接

Posted

技术标签:

【中文标题】创建使用环境变量作为默认值的 RStudio 连接【英文标题】:Create RStudio connection that uses environment variables as defaults 【发布时间】:2019-06-22 11:42:39 【问题描述】:

我正在尝试根据此文档将连接 sn-p 添加到 bigrquery 包:

https://db.rstudio.com/advanced/snippets/

我想将项目名称默认为这样的环境变量:

library(bigrquery)
con <-  dbConnect(
  bigquery(),
  project = "$1:Project=Sys.getenv('BIGQUERY_PROJECT')"
)

不幸的是,这不起作用,因为没有评估 Sys.getenv('BIGQUERY_PROJECT')

更新 例如对于@Jozef 的示例,我生成了以下代码:

library(bigrquery)
con <-  dbConnect(
  bigquery(),
  project = "`r eval(Sys.getenv('BIGQUERY_PROJECT'))`"
)

更新 2

这种工作,但不好看:

library(bigrquery)
con <-  dbConnect(
  bigquery(),
  project = paste0("$1:Project=", Sys.getenv("BIGQUERY_PROJECT"), "")
)

【问题讨论】:

你能用 debug() 分析你的问题吗? sn-ps 的链接是什么? 我该如何使用debug 调试(bigrquery::dbConnect)。请参阅 ??Debug。 bigrquery::dbConnect 按预期工作,我找不到将环境变量注入连接 sn-p 的方法 【参考方案1】:

不确定这是否正是您想要的,但如果我正确理解您的目的,您可以在反引号中使用 r eval( )

“USER”环境变量示例:

snippet envvar
    library(bigrquery)
    con <-  dbConnect(
        bigquery(),
        project = "$1:Project=`r eval(Sys.getenv('USER'))`"
    )

触发时将为我的用户 (jozef) 执行此操作:

另外,我 wrote a post with more examples 使用高级 sn-p。

【讨论】:

以上是关于创建使用环境变量作为默认值的 RStudio 连接的主要内容,如果未能解决你的问题,请参考以下文章

R,随时间变化作为因子。如何找到最接近某个时间的值?

R.003 Rstudio使用

npm获取配置值的两种方式

RStudio 错误 - 创建大型环境对象:protect():保护堆栈溢出

防止来自 RStudio 的持久数据库连接

Linux 学习笔记 Linux环境变量初稿