#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"