r - R:有没有办法覆盖已安装的 R 包中的数据?
问题描述
我构建了一个 R 包 (SemNetDictionaries),其中包含多个包含不同字典词汇表的数据。我想为用户提供一个选项来覆盖这些字典,因为他们将它们与未包含在包的基本字典中的响应一起使用。是否可以允许用户直接在 R 包中附加数据?
用户已经可以创建自己的单独字典(可以保存到他们的计算机上)
我已经弄清楚如何使用 tools:::makeLazyLoadDB; 但是,这会在为 CRAN 构建包时引发几个警告(因为这是一个内部函数),并且会损坏包。
# Load R package
library(SemNetDictionaries)
# Loads the "animals" dictionary in package
base <- SemNetDictionaries::load.dictionaries("animals")
# Word to add to dictionary in package
word2add <- "bluebird"
# Get data file names in package
data.files <- data(package="SemNetDictionaries")$results[,"Item"]
# Load data in package
lazyLoad(paste(system.file("data",package="SemNetDictionaries"),"Rdata",sep="/"))
# Update dictionary
.GlobalEnv[["animals.dictionary"]] <- unique(sort(c(base, word2add)))
# Remove all objects in the environment except for updated dictionary
rm(list = setdiff(ls(),data.files))
# Save data to package
tools:::makeLazyLoadDB(.GlobalEnv, paste(system.file("data",package="SemNetDictionaries"),"Rdata",sep="/"))
# Load dictionaries again (words are updated)
SemNetDictionaries::load.dictionaries("animals")
# This, however, corrupts the R package (see error below)
Error in get(data(list = dict.long, envir = environment())) :
lazy-load database 'C:\Users\apchrist\Documents\R\win-library\3.6\SemNetDictionaries/data/Rdata.rdb' is corrupt
In addition: Warning message:
In get(data(list = dict.long, envir = environment())) :
internal error -3 in R_decompress1
解决方案
推荐阅读
- java - 在 Java 中使用其他方法中的参数调用方法
- r - 为什么 R 3.6.0 在评估表达式 ("Dogs" < "cats") 时返回 FALSE?
- python - 如何在python中反序列化scala中的序列化对象
- spring - 如何使用 ModelAndView 在 RestController 上实现 REST API
- microsoft-cognitive - 使用 Azure 认知服务视觉 API 获取颜色的十六进制代码
- c++ - const-promotion 在哪里定义
- php - (empty($_POST['submit'])) 不起作用,而我可以看到调试器中有一个值
- java - Java、JDBC:关闭 PreparedStatement 是否也会释放其在数据库连接中的内存占用?
- apache-spark - 使用 Spark 结构化流的窗口化滞后/增量
- android - 自定义主题未实现到 DialogFragment