小编mar*_*ule的帖子

R包:刷新/更新内部原始数据

我正在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被视为参数的默认设置。

第二个问题:我想让用户以安全的方式从包外部修改这个 …

csv r package raw-data

5
推荐指数
0
解决办法
548
查看次数

标签 统计

csv ×1

package ×1

r ×1

raw-data ×1