我们如何在构建 R 包时设置常量变量?

Posted

技术标签:

【中文标题】我们如何在构建 R 包时设置常量变量?【英文标题】:How do we set constant variables while building R packages? 【发布时间】:2016-04-21 10:04:06 【问题描述】:

我们正在为我们的服务(巴西的机器人顾问)在 R 中构建一个包,并且我们一直在向函数内部的外部 API 发送请求。

由于这是我们第一次构建包,我们有一些问题。 :(

当我们将使用我们的包来运行一些脚本时,我们将需要一些信息,例如api_path, login, password

我们如何将这些信息放入我们的包中?

这是一个真实的例子:

get_asset_daily <- function(asset_id) 
    api_path <- "https://api.verios.com.br"

    url <- paste0(api_path, "/assets/", asset_id, "/dailies?asc=d")
    data <- fromJSON(url)
    data

有时我们使用staging 版本的 API,我们必须不断切换路径。我们应该如何在我们的函数中调用它?

我们应该设置一个全局环境变量,一个包环境变量,只是在我们的脚本或包配置文件中定义api_path

我们如何做到这一点?

提前感谢您的帮助。

安娜

【问题讨论】:

看到这个答案:stat.ethz.ch/pipermail/r-help/2010-July/245480.html 【参考方案1】:

一种方法是使用 R 的选项接口。在 R 目录中创建一个文件zzz.r(这是该文件的习惯名称),内容如下:

.onLoad <- function(libname, pkgname) 
    options(api_path='...', username='name', password='pwd')


这将在包加载到内存时设置这些选项。

【讨论】:

以上是关于我们如何在构建 R 包时设置常量变量?的主要内容,如果未能解决你的问题,请参考以下文章

创建新的 R 包时如何修复“没有可见的全局函数定义”

在 R 中声明一个常量变量

在构建 R 包时从另一个 Rcpp 函数调用 Rcpp 函数

如何将R包安装到自定义路径

如何从运行时参数初始化常量全局变量?

在构建“maven-plugin”包时如何使用 Proguard 混淆?