我正在R(3.4.3)中开发一个包含一些内部数据的包,我希望能够让用户刷新它而不必做太多的工作。但让我说得更具体一些。
该包包含几个依赖多个参数的函数,但我实际上只是导出完成所有工作的包装函数。因为有大量参数要传递给这些包装函数,所以我将它们放入一个.csv文件中并将它们作为列表传递。因此,数据是一个简单的.csv文件,param.csv其中一列包含参数名称,下一列包含参数值
parameter_name,parameter_value
ticker, SPX Index
field, PX_LAST
rolling_window,252
upper_threshold,1
lower_threshold,-1
signal_positive,1
signal_neutral,0
signal_negative,-1
Run Code Online (Sandbox Code Playgroud)
我正在运行处理它
param.df <- read.csv(file = "param.csv", header = TRUE, sep = ",")
param.list <- split(param.df[, 2], param.df[, 1])
Run Code Online (Sandbox Code Playgroud)
我将列表放入包中,如下所示
usethis::use_data(param.list, overwrite = TRUE)
Run Code Online (Sandbox Code Playgroud)
然后,当重置R交互窗口并执行
devtools::document()
devtools::load_all()
devtools::install()
require(pkg)
Run Code Online (Sandbox Code Playgroud)
一切都很顺利,数据可用并且可以传递给函数。
第一个问题:当我更改
param.csv、保存并重复上述四行代码时,内部param.list没有更新。我在这里缺少什么吗?或者包的开发人员本质上应该在usethis::use_data(param.list, overwrite = TRUE)每次更改.csv数据来源的文件时运行?
因为它旨在成为一种地图,所以用户将希望调整参数以进行(手动)模型校准。为了尝试解决这个问题,我让用户为函数提供自己的参数列表(像.csv以前一样作为文件)。我有一个函数get_param_list("path/to/file.csv")执行与上面完全相同的处理并返回列表。它允许用户传递自己的参数列表。事实上,内部数据param.list被视为参数的默认设置。
第二个问题:我想让用户以安全的方式从包外部修改这个 …