【发布时间】:2019-08-22 08:28:08
【问题描述】:
我正在编写一个需要工作的函数,无论它是否给出了 my_fun(arg1, arg2, arg3,..., argn) 或 my_fun(arg1, list(arg2, arg3,..., argn) 中的参数)) 这可能吗?
我尝试了以下方法(其中 do_stuff 是一个使用列表作为第二个参数的函数),但赋值 input <- ... 不起作用。你能找到替代品吗?
my_fun <- function(arg1,...) {
if(class(..1)!="list") {
input <- list(...)
} else {
input <- ...
}
return(do_stuff(arg1, input))
}
【问题讨论】:
-
为什么不明确说明论点?他们为什么要使用
...?! -
...允许在函数中调用命名对象。我会在这里使用一个命名列表来检查提供了哪些名称。或者您可以使用missing来检查函数调用中的参数。 -
因为我希望它既可以处理作为列表或单独参数给出的输入,也可以处理任意数量的参数。我编辑以澄清这一点
-
...的长度是否总是超过 1 个? -
@RonakShah 不,它可以有任何长度,包括 1。无论如何,我找到了一种让它工作的愚蠢方法。谢谢大家!