我正在整理一个我已经工作了将近一年的包。我有一个音节查找功能所需的哈希表。哈希表实际上只是一个查找表的环境(我想我不是计算机专家)。您可以在下面看到我创建它的功能。我有一个数据集DICTIONARY
(大约 20,000 个字),将在加载包时加载。我还把这个DICTIONARY
传递给散列函数,以便在加载包时创建一个新环境;像env <- hash(DICTIONARY)
htis 这样的东西是我现在加载环境的方式。如何在加载包时使函数在启动时运行,以便为使用我的包的人创建这个新环境?
hash <- function(x, type = "character") {
e <- new.env(hash = TRUE, size = nrow(x), parent = emptyenv())
char <- function(col) assign(col[1], as.character(col[2]), envir = e)
num <- function(col) assign(col[1], as.numeric(col[2]), envir = e)
FUN <- if(type=="character") char else num
apply(x, 1, FUN)
return(e)
}
#currently how I load the environment with the DICTIONARY lookup table
env <- hash(DICTIONARY)
DICTIONARY
如果它有帮助,这里是标题:
word syllables
1 hm 1
2 hmm 1
3 hmmm 1
4 hmph 1
5 mmhmm 2
6 mmhm 2
7 mm 1
8 mmm 1
9 mmmm 1
10 pff 1
你们中的许多人可能会想“这取决于用户是否要加载环境”。有效点,但此软件包的目标受众是识字领域的人。该领域的 R 用户并不多,所以我必须让这个东西尽可能容易使用。只是想弄清楚我为什么要这样做的哲学,这样它就不会成为争论的焦点。
先感谢您。(PS 我看过本手册(LINK),但似乎找不到有关此主题的任何信息)
编辑:根据安德烈的建议,我认为它会是这样的?但我不确定。这会在包中的所有其他函数和数据集加载后加载吗?这件事让我有点困惑。
.onLoad <- function(){
env <- hash(DICTIONARY)
}