我希望以编程方式创建的变量名,如数组内的功能:如何通过可选参数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"
但是我不能完全弄清楚如何在do.call
范围内将sep="_purchase_"
参数传递给paste
。在?do.call
我读了
args
是参数的函数调用列表。args
的names
属性给出参数名称。
试图将这一,我曾尝试:
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\")"
什么是产生通过do.call
desired_output
正确的方法是什么?
我想你想'do.call(paste,c(df,sep =“_ purchase _”))''。 – eipi10
另外,我知道这是有效的:''mapply(paste,df $ Var1,df $ Var2,MoreArgs = list(sep =“_ purchase _”))' – C8H10N4O2
@ eipi10工作 - 如果你把它写成答案,我会接受 – C8H10N4O2