【发布时间】:2012-05-09 08:04:25
【问题描述】:
我正在整理一个我已经工作了将近一年的软件包。我有一个音节查找功能所需的哈希表。哈希表实际上只是一个查找表的环境(我想我不是计算机专家)。您可以在下面看到我创建它的功能。我有一个数据集DICTIONARY(大约 20,000 字),将在加载包时加载。我还把这个DICTIONARY这个DICTIONARY传给hash函数,在包加载的时候创建一个新环境; 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)
}
【问题讨论】:
-
您看过这里列出的参考资料吗? stackoverflow.com/a/7297741/602276
-
不,我没有感谢您的参考。
-
我想你在找
?.onLoad