我正在开发一个R软件包,其中一个函数包含了对导入到软件包命名空间中的包中函数的
示例:
据我理解,命名空间(namespaces)的作用是使
非常感谢任何帮助。这是在运行OS X上的 R64 2.14.1。
更新: 该包位于此处 关于 DESCRIPTION 文件,可能存在问题:roxygen2 不会使用
关于 NAMESPACE 提取,这是导入部分:
match.fun
调用。但是,在加载软件包时,match.fun
调用无法找到函数名称。根据Hadley Wickham的描述,我认为我的做法没有问题,但明显不是这种情况。示例:
# in the package file header, for creation of the NAMESPACE via roxygen2:
##` @import topicmodels
# The function declaration in the package
ModelTopics <- function(doc.term.mat, num.topics, topic.method="LDA"){
topic.fun <- match.fun(topic.method)
output <- topic.fun(doc.term.mat, k=num.topics)
return(output)
}
然后在R中:
> library(mypackage)
> sample.output <- ModelTopics(my.dtm, topic.method="LDA", num.topics=5)
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'LDA' of mode 'function' was not found
据我理解,命名空间(namespaces)的作用是使
match.fun
调用能够访问包命名空间,其中应该包括 topicmodels
函数。但是这里似乎不是这种情况。如果我将 topicmodels
直接导入到 R 会话的全局命名空间中,则可以正常工作。非常感谢任何帮助。这是在运行OS X上的 R64 2.14.1。
更新: 该包位于此处 关于 DESCRIPTION 文件,可能存在问题:roxygen2 不会使用
Imports:
语句更新 DESCRIPTION 文件。但是,其他软件包也没有列在那里,只有 match.fun
调用似乎受到影响。关于 NAMESPACE 提取,这是导入部分:
import(catspec)
import(foreach)
import(gdata)
import(Hmisc)
import(igraph)
import(lsa)
import(Matrix)
import(plyr)
import(RecordLinkage)
import(reshape)
import(RWeka)
import(stringr)
import(tm)
import(topicmodels)