Ну, я думаю, вам нужно решить, какая часть вашего кода нуждается в оценке, а какая нет.
Из вашего примера не совсем понятно, насколько вы хотите следовать, но ваш вопрос-пример может быть решен простым списком (), вам нужна только пользовательская функция для предоставления значений по умолчанию:
myfun <- function(a=1) list(a=a)
value <- myfun(a=letters[1:2]))
paste(value[[1]], collapse = " - ")
# Basically: value <- list(a=letters[1:2])), or paste(letters[1:2], collapse= " - ")
Обычно вы используете match.call () без каких-либо аргументов, чтобы выяснить, каким образом была вызвана ваша функция.Иногда полезно знать, был ли вызван fun (a = c ('a', 'b')) или fun1 (a = letters [1: 2]), поэтому match.call сообщает вам об этом, ничего не оценивая.
Так что, если вы действительно хотите что-то сделать со своими аргументами, просто вызовите их напрямую, и позже вы сможете передать их другой функции
mypaste <- function(..., sep=' -CustomSep- ', collapse=' -Mycollapse- ', prefix='Value:') {
if(length(list(...))>0) {
paste(prefix, ..., sep=sep, collapse=collapse)
} else {
text <- character(0)
}
}
Эта функция - просто вариант вставки,но вы можете сделать его обширным, как хотите.
И у меня складывается впечатление, что вам нужен общий случай, когда вы сопоставляете свои аргументы с аргументами другой функции, но для ответа на этот вопрос мне нужно знатьбольше о том, что именно вы пытаетесь достичь.