3

いくつかの関数を含むファイル「myfuncs.R」があるとします。

A <- function(x) x
B <- function(y) y
C <- function(z) z

「myfuncs.R」に含まれるすべての関数を、適切な名前の独自のファイルに配置したいと考えています。関数を抽出して別のファイルに配置する単純な Bash シェル スクリプトがあります。

split -p "function\(" myfuncs.R tmpfunc
grep "function(" tmpfunc* | awk '{
  # strip first-instances of function assignment
  sub("<-", " ")
  sub("=", " ")
  sub(":", " ")  # and colon introduced by grep
  mv=$1
  mvto=sprintf("func_%s.R",$2)
  print "mv", mv, mvto
}' | sh

私に残して:

func_A.R
func_B.R
func_C.R

ただし、このスクリプトには明らかな制限があります。たとえば、関数 'A' にネストされた関数がある場合、誤動作します。

A <- function(x){
    Aa <- function(x){x}
    return(Aa)
}

関数全体が1行にある場合、完全に失敗します。

これを行うための、より堅牢でエラーが発生しにくい方法を知っている人はいますか?

4

1 に答える 1

7

関数をソースしてから入力しますpackage.skeleton()

関数ごとに個別のファイルが作成されます。

于 2012-11-06T22:16:10.250 に答える