Вызов пропущенных аргументов из родительской среды - PullRequest
0 голосов
/ 15 января 2019

Я не смог найти умный способ восстановить отсутствующие аргументы из родительской среды (или перестроить ее), если они не предоставлены

Сбой при использовании missing

fooBar <- function(x,y){
  if(missing(y)) {
    y = get0("y", inherits = TRUE)
    x + y
  } else {
    x + y
  }
}
y <- 1
fooBar(x = 2)

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Может быть, это?

fooBar <- function(x,y){
  if(missing(y)) y <- eval.parent(quote(y))
  x + y
}
y <- 1
fooBar(x = 2)
# [1] 3
0 голосов
/ 15 января 2019

Я нашел это решение, но я расстроен этим

fooBar <- function(x,y=NULL){
  if(is.null(y)) {
    rm(y)  # otherwise, get0 recovers NULL :S
    y = get0("y", inherits = TRUE)
    x + y
  } else {
    x + y
  }
}
y <- 1
fooBar(x = 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...