假设函数foo
的参数被任意定义为...
。
如果参数名称为a = c("ESL", "prof")
,并且其值分别为a1.vales = 1:8
和a2.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
答案 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