match.fun
関数の 1 つに、パッケージ名前空間にインポートされたパッケージ内の関数への呼び出しが含まれている R パッケージに取り組んでいます。しかし、パッケージをロードすると、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
私の名前空間の理解から、match.fun
呼び出しは関数を含むパッケージ名前空間にアクセスできる必要がありtopicmodels
ます。しかし、ここではそうではないようです。topicmodels
R セッションのグローバル名前空間に直接インポートすると、これは機能します。
どんな助けでも大歓迎です。これは、OSX 上で動作する R64 2.14.1 です。
更新: パッケージはこちら
おそらくそれが問題です: roxygen2 は記述ファイルをImports:
ステートメントで更新しません。しかし、他のパッケージもそこにリストされていません。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)