是否可以像Python中的* args一样在R中迭代省略号?

时间:2019-01-15 08:50:09

标签: r

新定义的用于求和输入的函数:

mysum=function(...){
return(sum(...))
invisible(...)
}

> mysum(1,2,3,4)
[1] 10

如果我不使用sum函数怎么办?我的意思是:

mysum=function(...){
s=0
for(i in ...){
s=s+i
}
return(s)
}

它不起作用。 ...是否可以迭代?

在Python中,这很简单:

def mysum(*args):
    s=0
    for i in args:
        s+=i
    return(s)

2 个答案:

答案 0 :(得分:2)

在循环之前在省略号上使用c(),并将其分配给函数:

mysum=function(...){
  vec = c(...)
  s=0
  for(i in vec){
    s=s+i
  }
  return(s)
}

mysum(1,2,3)
[1] 6

答案 1 :(得分:2)

是的!

通常的方法是将其填充到列表中,然后遍历该列表:

app:drawableLeftCompat
app:drawableStartCompat

是使用my_fun <- function(...) { args <- list(...) # do stuff with ellipses args. } ,还是直接输入命名参数,还是仅循环(lapply)即可。

如果您假设for (i in seq_along(args)) {args[[i]]}仅包含向量,则可以执行以下操作:

...