Как определить параметры программно

#r

#r

Вопрос:

Я пытаюсь определить параметры программно, используя строковый вектор, как показано ниже. Однако параметр не определяется и возвращает нулевое значение. Существуют ли какие-либо рекомендации или функции для этого?

 f <- "z" 
options(f = TRUE)
getOption("z")
# returns NULL
  

Комментарии:

1. Не могли бы вы подробнее рассказать об этом

Ответ №1:

Согласно документам:

Параметры также могут быть переданы путем указания одного неназванного аргумента, который является именованным списком

Итак, вы можете сделать

 f <- list(z = TRUE)
options(f)
getOption("z")
#> [1] TRUE
  

Или, если вы хотите иметь возможность использовать формат ввода в вашем вопросе, вы можете использовать следующую функцию:

 prog_options <- function(...)
{
  mc <- as.list(match.call()[-1])
  names(mc) <- 
    sapply(names(mc), function(x) eval(as.name(x), envir = parent.frame()))
  options(mc)
}
  

Который позволяет следующее:

 f <- "z"
g <- "y"

prog_options(f = TRUE, g = "Yes")

getOption("z")
#> [1] TRUE

getOption("y")
#> [1] "Yes"