Предположим, я пишу такую функцию в R:
fun1 <- function(x,...,simplify=TRUE,sort=TRUE) {
# do something here ...
}
В функции ...
предполагается ряд выражений, которые оцениваются в определенных средах. Однако иногда возможно, что само выражение simplify=FALSE
или sort=FALSE
предназначено для ...
, а не для аргументов fun1
.
Из некоторых пакетов я узнал, что автор избегает использования потенциальных конфликтов между возможными именованными значениями для ...
и существующими именами аргументов. Поэтому они пишут функцию следующим образом:
fun1 <- function(.data, ..., .simplify = TRUE, .sort = TRUE) {
# do something here ...
}
Это не решает проблему, но позволяет избежать многих потенциальных конфликтов, если предположить, что типичный ввод данных не будет часто использовать .data
, .simplify
и .sort
в выражении.
Как лучше всего решить или обойти эту проблему?
mapply
? взгляните на источник и посмотрите, полезно ли это - person rawr   schedule 06.07.2014...
аргументы? Если да, то ответы и комментарии в этом сообщении а> может быть полезно. Вы также можете попробовать поместить...
после существующих аргументов. - person Rich Scriven   schedule 06.07.2014...
- использовать аргументы, чьи входные данные представляют собой список именованных аргументов, и вызывать каждую функцию в вашем fun1, используяdo.call
. Например.fun1 = function(f2_args, f3_args) do.call(f2, f2_args); do.call(f3, c(f3_args, extra_f3_arg))
. - person alexis_laz   schedule 06.07.2014