1
一部のコードで使用されている関数のセットを探しています。 コード内にある関数の特定
- は、彼らが常に開放ブラケット
- ループ文字以外の何かがなければならない
- が指定した関数名を超える正規表現
grepl("someFunction\\(", code)
が続くと仮定し、関数名の前にアンダースコアまたはドット、frame
はdata.frame(...)
に見つかりません。gsub(".","\\.",theFunctions, fixed=TRUE)
がここにあります:grepl("[^a-zA-Z_\\.]someFunction\\(", code)
\\.
で関数名にドットを交換したコードにスペースを付加することで発見されたコードの先頭で必ず関数名を作成します。これは、次の正規表現で可能です code <- "mean(pi); head(data.frame(A=1:5)); data_frame(7:9)"
funs <- c("mean", "head", "head.data.frame", "data.frame", "frame", "data_frame")
data.frame(isfound=sapply(paste0("[^a-zA-Z_\\.]",gsub(".","\\.",funs,fixed=TRUE),"\\("),
grepl, x=paste0(" ",code)),
shouldbefound=c(T,T,F,T,F,T))
これはうまくいくと思われますが、長すぎて人が読めるものではありません。
いくつかのコードに表示される関数のセットをより洗練された方法で確認できますか?