使用三点参数时list(...)vs as.list(...)

时间:2015-07-09 12:08:45

标签: r list arguments

我想获得一个包含" ..."的列表传递给函数的参数。

myfunction <- function(..., a=1){
  parameters <- as.list(...)
  for(i in parameters){
    print(i)
  }
}

但是在调用myfunction("x","y","z")时,我会得到一个带有一个项目的向量:

## [1] "x"

然后,如果我只用as.list(...)

替换list(...)
myfunction <- function(..., a=1){
  parameters <- list(...)
  for(i in parameters){
    print(i)
  }
}

它有效:

## [1] "x"
## [1] "y"
## [1] "z"

那么为什么as.list(...)表现不同?

干杯。

1 个答案:

答案 0 :(得分:2)

您可能正在寻找c连接函数。

as.list(c('x', 'y', 'z'))
#[[1]]
#[1] "x"
#
#[[2]]
#[1] "y"
#
#[[3]]
#[1] "z"

myfunction <- function(..., a=1){
  parameters <- as.list(c(...))
  for(i in parameters){
    print(i)
  }
}

myfunction('x', 'y', 'z')
#[1] "x"
#[1] "y"
#[1] "z"

我不想让解释错误,所以我会让其他人解释原因。