是否有一个函数可以获得给定函数的氧气细节?
例如,如果函数是
#' Negate a number
#' @param x some number
#' @output -x negation of input
fun <- function(x) -x
我想这样做:
info <- get_roxygen_info(fun) # <- this is made up for illustration
> info
> list(description = 'Negate a number', param = 'x some number', output = '-x negation of input')
目的是将脚本中的所有函数放入具有其描述的表中。我已经可以部分地使用lsf.str()
的组合来获得函数名和formals
来获得函数参数。最坏的情况是将脚本解析为文本,这是我想避免的。
您不一定要这样做:在解析文件时并不是保留所有的氧原子标记。如果您可以访问源文件,您可以这样做,并且您可能能够从函数中找到源文件。
例如,如果我将示例放入sample.R
并使用默认的keep.source=TRUE
源,我可以获得文件名,然后使用Roxygen解析该文件:
library(roxygen2)
filename <- getSrcFilename(fun, full.names = TRUE)
parsed <- parse_file(filename)
thisfn <- which(sapply(parsed, function(block) block$line == getSrcLocation(fun, "line") ))
parsed[[thisfn]]
产生如下输出:
> parsed[[thisfn]]
<roxy_block> [sample.R:4]
$tag
[line: 1] @title 'Negate a number' {parsed}
[line: 2] @param 'x some number' {parsed}
[line: 4] @usage '<generated>' {parsed}
[line: 4] @.formals '<generated>' {parsed}
[line: 4] @backref '<generated>' {parsed}
$call fun <- function(x) -x
$object <function>
$topic fun
$alias fun
Warning message:
[sample.R:3] @output is not a known tag
我让你把你想要的部分摘录出来。
但是我会给出通常的建议:如果你的脚本足够长,你需要一个目录,为什么不把它放在一个小包里呢?然后R会为你做所有组织文档的工作。