【问题标题】:A better way to extract functions from an R script?从 R 脚本中提取函数的更好方法?
【发布时间】:2012-11-06 22:12:13
【问题描述】:

假设我有一个文件“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)
}

如果整个函数在一行上,则完全失败。

有没有人知道一种更强大、更不容易出错的方法来做到这一点?

【问题讨论】:

  • 这是目标,但如果将函数拆分为单独的文件,创建文档似乎会容易得多。
  • 不正确。使用roxygen 创建内联文档。
  • @Andrie,我更喜欢roxygen2 ;-)

标签: r bash function split


【解决方案1】:

获取您的函数,然后输入package.skeleton()

将为每个函数制作单独的文件。

【讨论】:

  • 请注意,dumppackage.skeleton() 中用于编写“函数”对象的文本表示的函数。所以,如果你只是想保存函数而不处理包框架,你可以使用它。
猜你喜欢
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
相关资源
最近更新 更多