提取传递给函数参数的函数参数值

时间:2019-02-27 20:12:20

标签: r function parameter-passing

我可以使用以下方式访问传递到名为命名列表的函数中的参数值

compile_name <- function(first_name, last_name){
  paste(first_name, last_name)
}

create_project <- function(project_name,...) {
  print(as.list(match.call()))
}

create_project(project_name = compile_name(first_name = "first", last_name = "last"), more_stuff = "more")


[[1]]
create_project

$project_name
compile_name(first_name = "first", last_name = "last")

$more_stuff 
[1] more

是否有一种方法可以解析传入参数(此处为project_name)以及列表中的函数的参数。在上面的示例中,我最终在project_name参数的列表点中以字符串形式出现了函数调用。像这样:

 [[1]]
create_project

$project_name
  $first_name 
    [1] "first"
  $last_name
    [1] "last"

$more_stuff 
[1] "more"

还有,有没有一种方法可以检查参数是否包含对函数内部的函数作出反应的函数?

3 个答案:

答案 0 :(得分:2)

new WebDriverWait(driver, 20)
        .until(d -> ((JavascriptExecutor)d).executeScript("return document.readyState")
            .equals("complete"));

reprex package(v0.2.1)于2019-02-27创建

答案 1 :(得分:1)

这是一个检查其参数是否为“语言”类型(即表达式)的函数,如果是,则进一步检查以查看那些参数是否为函数:

my_function <- function(a, b) {
  args <- as.list(match.call())[-1]

  if (is.language(args$b)) {
    sub_args <- as.list(match.call(call = substitute(b)))
  }

  if (any(sapply(sub_args, is.symbol))) {
    print('found a sub-function!')
    print(sub_args)
  }
}

my_function(a = 10, b = my_function(1, mean))

[1] "found a sub-function!"

[[1]]
my_function

$a
[1] 1

$b
mean

答案 2 :(得分:1)

您只是在寻找list(...)吗?

create_project = function (project_name, ...) {
    lst = list(...)
    # do something with `lst`.
}