R列出文件中的函数

时间:2016-10-02 09:52:54

标签: r ls

如何列出某个R文件的所有函数,例如

list = list.all.functions(file.name, alphabetical = TRUE, ...)

其中list是一个字符串向量,包含file.name中函数的名称?

How to list all the functions and their arguments in an R file?的解决方案没有给我任何输出(因为我对参数不感兴趣,我开了一个新问题)。

修改

文件allometry.R

开头
#==========================================================================================#
#==========================================================================================#
#    Standing volume of a tree.                                                            #
#------------------------------------------------------------------------------------------#
dbh2vol <<- function(hgt,dbh,ipft){
   vol  = pft$b1Vol[ipft] * hgt * dbh ^ pft$b2Vol[ipft]
   return(vol)
}#end function dbh2ca
#==========================================================================================#
#==========================================================================================#

我的主要看起来像

rm(list=ls())

here     = "/directory/of/allometry.R/"
setwd(here)

is_function = function (expr) {
  if (! is_assign(expr))
    return(FALSE)
  value = expr[[3]]
  is.call(value) && as.character(value[[1]]) == 'function'
}

function_name = function (expr)
  as.character(expr[[2]])

is_assign = function (expr)
  is.call(expr) && as.character(expr[[1]]) %in% c('=', '<-', 'assign')


file_parsed = parse("allometry.R")
functions = Filter(is_function, file_parsed)
function_names = unlist(Map(function_name, functions))

1 个答案:

答案 0 :(得分:0)

加入该党可能为时已晚,但总比没有好。

有一个名为NCmisc的软件包,它具有列出文件中所有函数的功能,并返回一个列表,其中组件的名称就是它们所属的软件包的名称。如果全局环境中有任何功能,它们将在.GobalEnv列表组件下。只需加载文件使用的所有软件包,然后运行以下命令:

all.functions <- list.functions.in.file(
                       filename = "/path/to/file/my_file.R")