创建一个函数,该函数输入一个值,其名称用=分隔

时间:2013-12-02 19:33:52

标签: r function arguments

如何构造一个可以处理由名称和由=符号分隔的值组成的参数的函数?

例如:

foo = myFun(HELLO = 3)
bar = myFun(Tintin = 5)

它构造:

foo = 3
names(foo) = "HELLO"
bar = 3
names(bar) = "Tintin"

当然,我可以用逗号分隔这两个参数,但这不是我的问题所在!

R中有许多功能都是这样的。

data.frame(a=1:5, babar=2:6)
cbind(jf=1:3, ij=4:6)

(我想解决方案可能与在函数参数中使用有关。)

1 个答案:

答案 0 :(得分:4)

一个非常小的例子:

foo <- function(...){
    list(...)
}

使用中:

> foo(x = 4)
$x
[1] 4

> foo(x = 4,y = 5)
$x
[1] 4

$y
[1] 5

如果你想要一个矢量,那么总是unlist

请注意,通过简单地扫描您引用的两个示例函数的代码,可以轻松快速地确定此技术。 data.framecbind都会在源代码的早期通过...收集x <- list(...)中的参数。