在`...`中为R函数设置名称

时间:2019-06-14 10:08:19

标签: r function

假设函数foo的参数被任意定义为...

如果参数名称为a = c("ESL", "prof"),并且其值分别为a1.vales = 1:8a2.vales = 0:7

我如何使foo(a[1] = a1.vales, a[2] = a2.vales)foo("ESL" = a1.vales, "prof" = a2.vales)一样工作?

P.S。 setNames可以在这里提供帮助吗?

foo <- function(n = 2:9, ...){

  data.frame(n = n, ...)
}

## Function argument names and values:
a = c("ESL", "prof")
a1.vales = 1:8
a2.vales = 0:7

## Example of use: 
foo(a[1] = a1.vales, a[2] = a2.vales)    # Fails?
foo("ESL" = a1.vales, "prof" = a2.vales) # Works

1 个答案:

答案 0 :(得分:0)

要解决您当前的问题,有一种解决方法:

foo <- function(n = 2:9, ...){
  args <- list(...)
  setNames(data.frame(c(list(n), args[-1])), c("n", args[[1]]))
}

foo(n = 2:9, a, a1.vales, a2.vales)

  n ESL prof
1 2   1    0
2 3   2    1
3 4   3    2
4 5   4    3
5 6   5    4
6 7   6    5
7 8   7    6
8 9   8    7