В R дублируйте имена аргументов в функции и функции внутри функции. Как я могу передать аргумент непосредственно точка точка точка? - PullRequest
0 голосов
/ 06 ноября 2019

В этом случае, как я могу передать аргумент непосредственно в точку точка точка в R? Без изменения функций и, предпочтительно, не полагаясь на положение, например, например,

fun_inner <- function(other_arg = NA, a){
  print(paste("inner:", a))
  a
}

fun_outer <- function(a, ...){
  outer <- a
  print(paste("outer:", a))

  inner <- fun_inner(...)

  paste("inner not equal to outer?", inner != outer)
}

, например, как-то так ... но это, очевидно, не работает

fun_outer(a = 1, ... = list(a = 2))

Опять же, ограничения заключаются в том, что я 'я бы предпочел изменять только введенные аргументы (вместо того, чтобы переписывать эти функции)

# e.g. could create wrapper function for `fun_outer()` to call  
# that has w/ different names (or other analagous approach), 
# but would rather avoid...
fun_inner_wrapper <- function(other_arg, b){
  fun_inner(other_arg = other_arg, a = b)
}

, и также предпочел бы не полагаться просто на позицию аргумента.

# e.g. this inputs different values for `a` argument for `fun_inner()` and
# `fun_outer()`, but is reliant on giving a positional input for `other_arg` which I
# would prefer not to do...
fun_outer(1, 2, 3)
[1] "outer: 1"
[1] "inner: 3"
[1] "inner not equal to outer? TRUE"
...