我可以使用以下方式访问传递到名为命名列表的函数中的参数值
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"
还有,有没有一种方法可以检查参数是否包含对函数内部的函数作出反应的函数?
答案 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`.
}