用`call`实现`do.call`

时间:2016-06-21 15:13:40

标签: r do.call

我正在执行advanced R的练习,即实施do.call,我能够提出as.call版本,但是当我尝试用{{1}实现时事情似乎有点困惑。

这是我的代码:

call版本:

as.call

似乎与do.call2 <- function(what, args) { eval(as.call(c(as.name(what),args))) } doc:

中的示例一起使用
do.call

但是当我尝试使用tmp <- expand.grid(letters[1:2], 1:3, c("+", "-")) do.call2("paste", c(tmp, sep = "")) [1] "a1+" "b1+" "a2+" "b2+" "a3+" "b3+" "a1-" "b1-" "a2-" "b2-" "a3-" "b3-" 时,我无法解决问题:

call

此处do.call3 <- function(what,args) { cc <- call(what,args) eval(cc) } do.call3("paste", c(tmp, sep = "")) [1] "c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2)" "c(1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3)" [3] "c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2)" "" 是参数列表。我知道也许我需要从args解包参数,但不知道该怎么做。

0 个答案:

没有答案