在嵌套函数中使用省略号

时间:2020-06-10 16:09:05

标签: r function ellipsis

此问题与上一个问题有关:Running a function with multiple arguments when an argument is not used

我有两个功能,originalexample将在以后的包装中。 example将遵循if/else结构,并在其中一个分支(如果为arg1 = T)上运行original。内容如下:

编辑:给出比以前更现实的示例

  original <- function(start, ...) {
  list1 = list(...)

if (any(map(list1, length) != 2)) {stop('ERROR! Each vector must have length 2')}
  df = read.csv(start)
  final <- bind_rows(list1, df)
  return(final)
}




       example <- function(arg1 = TRUE, ...) {
          args<- list(...)

      if (!(arg1) & is.null(args$arg2)) {stop("If arg1 == F, arg2 is needed.")}

      if(arg1 == TRUE & is.null(argumentos$arg3)){stop("If arg1 == T, arg3 is needed.")}

      if (arg1 != TRUE) {

            final <- bind_rows(arg2)
} else{

            arg3 <- args$arg3
            args$arg3 <- NULL
            final <- original(start = arg3, args)

              }


              return(final)
            }

原始问题:可以嵌套这样的函数吗? 我的主要问题是,如何确保list1中形成original的元素现在由...的省略号example中的条目构成?我不能简单地将后者包含在列表中,因为original本身已经可以做到这一点。

编辑,我的主要问题是original中的典型呼叫的格式为original(start, c(1, 2000), c(2, 2001), c(3,2001))

在计算机上运行时,出现问题是因为当我在example上运行example(arg1 = TRUE, arg3 = './Desktop', c(1, 2000), c(2, 2001), c(3,2001))时,我希望R通过example()original(start = './Desktop', c(2, 2001), c(3,2001))计算。

但是R崩溃了,这给了我第一个功能的原始停止消息:

ERROR! Each vector must have length 2

仅当arg3之后有多个矢量时才会发生这种情况。

也许我的函数正在运行original(start = './Desktop', '.Desktop', c(2, 2001, 3 ,2001))

有人可以帮我解决这个问题吗?

0 个答案:

没有答案