R包:写入内部数据,但不是一次全部

R package: writing internal data, but not all at once

我正在使用 usethis/devtools 开发 R 包。该包有一些我想保留在内部的对象,只是为了避免混乱。我使用的结构是根据来源在不同的文件中创建对象,所有这些都在我的 data-raw 文件夹中。例如,文件 make_laus_codes.R 准备了两个来自劳工统计局的查找代码数据框(一个内部的,称为 laus_codes),文件 make_decennial_tables.R 准备了十年一次的人口普查的查找代码(包括内部,decennial_nums)。

如果我像 usethis::use_data(data_name, internal = TRUE) 这样调用,如果 sysdata.rda 文件已经创建并且我没有选择覆盖它,我会得到一个错误;如果我选择覆盖,它会覆盖整个内容,而不是我所期望的,即将第二个对象附加到 sysdata.rda.

的公认答案是调用 usethis::use_data(laus_codes, decennial_nums, internal = TRUE),但那里的评论提出了如果这些对象没有同时创建怎么办的问题,这就是我的地方我想接。

我的结构简化版如下:

data-raw/make_laus_codes.R:

laus_codes <- data.frame(
  area = c("Connecticut", "Fairfield County", "Hartford County"),
  code = c("ST0900000000000", "CN0900100000000", "CN0900300000000")
)

data-raw/make_decennial_tables.R:

decennial_nums <- c("H002", "H003", "H004", "H005", "H006")

data-raw/make_internal_data.R:

source("./make_laus_codes.R")
source("./make_decennial_tables.R")

usethis::use_data(laus_codes, decennial_nums, internal = TRUE)

这行得通,但感觉很尴尬,好像我错过了执行此操作的预期方法。有没有更好、更合适、usethis 想要的 and/or 的方法?以这种方式获取其他文件感觉容易出现错误和健忘。

虽然此解决方案未使用 usethis,但我相信它可以简洁地解决您的问题:

# Let's say you've saved this sysdata in the past
laus_codes <- data.frame(
    area = c("Connecticut", "Fairfield County", "Hartford County"),
    code = c("ST0900000000000", "CN0900100000000", "CN0900300000000")
)
usethis::use_data(laus_codes, internal = TRUE)

# Updating sysdata with objects you've created just now
decennial_nums <- c("H002", "H003", "H004", "H005", "H006")
sysdata_filenames <- load("R/sysdata.rda")
save(list = c(sysdata_filenames, "decennial_nums"), file = "R/sysdata.rda")