在“..' 表示 R 函数

  • 本文关键字:函数 表示 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)

附言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

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

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

最新更新