0

私はパッケージを持っていて、関数のコードを変更することについて議論しています。私はそれが他のすべてにどのように影響するかを判断したいと思います。私はこれをgithubとローカルリポジトリのパッケージとして持っています。私の最初の考えは、パッケージ内のすべての関数(名前空間にロードされていない関数も含む)をリストし、次にそれらすべてをコンソールに送信する方法でした。次に、コードを切り取ってテキストエディターに貼り付け、使用されているこの関数のインスタンスを探すことができます。

この問題の簡単な解決策があれば、車輪の再発明はしたくありません。私のやり方が最も合理的であると思われる場合でも、それを実現する方法がわかりません。

4

2 に答える 2

7

それは単体テストと呼ばれます。そして、それは万能薬ではありませんが (「正しさを証明またはテストすることはできません」)、かなりの助けになります。

紹介については、R Wiki のこのページを参照してください。

于 2012-08-03T20:02:02.393 に答える
0

これは、どの関数が他の関数の影響を受けているか、または他の関数を含んでいるかを確認するかなり迅速な方法です。最近、インポートを使用する場合、パッケージ関数の内部requireまたは必要がないことがわかりました。libraryそこで、そのパッケージの関数を使用してパッケージを調べ、またはtermco.aのインシデントを探しました。最初の部分は、パッケージの R ディレクトリのパスを渡し、各ファイルを 1 行ずつ読み取ります。次に、出現回数をカウントし、インデックスを使用してそれらの用語を含む関数だけを返します。パッケージのベータ版をダウンロードする必要があります。libraryrequiretermoco.aqdap

インストールqdap:

library(devtools)
install_github("qdap", "trinker")

用語を検索:

WD <- getwd()
setwd("C:/Users/trinker/GitHub/qdap/R/")
m <- sapply(dir(), readLines)
n <- do.call(rbind, lapply(seq_along(m), function(i){
    data.frame(fun=rep(names(m)[i], length(m[[i]])), text=m[[i]])
}))

x <- with(n, termco.a(text, fun, qcv(require, library)))
x$raw[rowSums(x$raw[, -c(1:2)]) > 0, ]

出力:

> x$raw[rowSums(x$raw[, -c(1:2)]) > 0, ]
                   fun word.count require library
1   adjacency_matrix.R        198       0       1
59         formality.R        954       2       0
112            qprep.R        145       4       4
116  read.transcript.R        563       1       1
144         termco.a.R        614       1       0
146         termco.d.R        535       1       0
156      trans.cloud.R        928       5       0
于 2012-11-17T02:29:19.493 に答える