如何将可选参数传递给do.call中的函数

时间:2016-04-13 15:53:54

标签: r do.call

我希望以编程方式创建一个变量名数组,例如:

desired_output <- c("first_purchase_date","last_purchase_date","largest_purchase_date",
                    "first_purchase_amount","last_purchase_amount","largest_purchase_amount") 

我相信我可以使用do.call执行此操作,并建立在以下内容之上:

> do.call(paste, expand.grid(c("first","last","largest"),c("date","amount")))
[1] "first date"     "last date"      "largest date"   "first amount"   "last amount"    "largest amount"

但是,我无法弄清楚如何将sep="_purchase_"参数传递给paste do.call内的?do.call。在args中,我读到了

  

names是函数调用的参数的列表args   df <- expand.grid(c("first","last","largest"), c("date","amount"), stringsAsFactors = FALSE) do.call(paste, args = list(...=df, sep="_purchase_")) # does not return desired output, but instead: # [1] "c(\"first\", \"last\", \"largest\", \"first\", \"last\", \"largest\")" # [2] "c(\"date\", \"date\", \"date\", \"amount\", \"amount\", \"amount\")" 的属性给出了参数名称。

尝试合并这个,我尝试过:

desired_output

通过do.call生成{{1}}的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以执行do.call(paste, c(df, sep="_purchase_")),但也许apply(df, 1, paste, collapse="_purchase_")更直接。