Я хочу программно создать массив имен переменных, например:
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
?
do.call(paste, c(df, sep="_purchase_"))
. - person eipi10   schedule 13.04.2016mapply(paste, df$Var1, df$Var2, MoreArgs = list(sep="_purchase_"))
- person C8H10N4O2   schedule 13.04.2016