从R脚本中提取函数的更好方法是什么?

时间:2012-11-06 22:12:14

标签: r bash function split

假设我有一个文件“myfuncs.R”,其中包含一些函数:

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

我想将“myfuncs.R”中包含的所有函数放入他们自己的文件中,并正确命名。我有一个简单的Bash-shell脚本来提取函数并将它们放在单独的文件中:

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 个答案:

答案 0 :(得分:7)

获取您的功能,然后输入package.skeleton()

将为每个功能分别创建文件。