cam*_*lle 8 r devtools r-package
我正在使用usethis/ 处理R 包devtools。这个包有一些我想保留在内部的对象,只是为了保持混乱。我使用的结构是根据对象的来源在不同文件中创建对象,所有对象都在我的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.
在 sysdata.rda 中存储多个对象的公认答案:R-package development说要调用usethis::use_data(laus_codes, decennial_nums, internal = TRUE),但是那里的评论提出了一个问题,如果这些对象不是同时被创建会怎样,这就是我想要的地方捡起。
我的结构的简化版本如下:
数据原始/make_laus_codes.R:
laus_codes <- data.frame(
area = c("Connecticut", "Fairfield County", "Hartford County"),
code = c("ST0900000000000", "CN0900100000000", "CN0900300000000")
)
Run Code Online (Sandbox Code Playgroud)
数据原始/make_decennial_tables.R:
decennial_nums <- c("H002", "H003", "H004", "H005", "H006")
Run Code Online (Sandbox Code Playgroud)
数据原始/make_internal_data.R:
source("./make_laus_codes.R")
source("./make_decennial_tables.R")
usethis::use_data(laus_codes, decennial_nums, internal = TRUE)
Run Code Online (Sandbox Code Playgroud)
这有效,但感觉很尴尬,就像我错过了这样做的预期方法。有没有一种更好、更合适和/或意图的方法来做到这一点usethis?以这种方式获取其他文件感觉容易受到错误和健忘的影响。
虽然此解决方案不使用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")
Run Code Online (Sandbox Code Playgroud)