Требования к аргументу в главе функции - расширения match.arg? - PullRequest
0 голосов
/ 09 марта 2020

Приятно, что значения по умолчанию можно увидеть в заголовке функции a, таким образом, автоматически в документации функции. Однако, когда функция match.arg используется в теле функции, отображаемый вектор по умолчанию фактически состоит из значения по умолчанию и необязательных вариантов выбора. В любом случае, match.arg ограничен типом персонажа. Как правило, проверку ввода необходимо выполнять другим способом, например, с помощью пакета checkmate.

Было бы неплохо, если бы требования аргументов, проверяемые в теле функции, отображались в заголовке функции. Тогда было бы проще создать интерфейс для функции из другого языка программирования или среды. Документация тоже становится проще.

Чтобы объяснить, что я имею в виду. Вот первые строки примера функции:

Fun <- function(fruit = Character("apple", c("banana", "orange")), 
                language = Characters(c("r", "c++")), 
                years = Integers(2018:2020, min = 1970, max = 2020), 
                value = Numeric(3, min = 0)) {
  fruit <- MatchArg(fruit)
  language <- MatchArg(language)
  years <- MatchArg(years)
  value <- MatchArg(value)

Значение заголовка этой функции:

  • fruit: символ с "apple" по умолчанию и "banana" и "orange" в качестве необязательных вариантов.
  • language: вектор символов с c("r", "c++") по умолчанию. Других требований нет.
  • years: целочисленный вектор с 2018:2020 по умолчанию и минимальные / максимальные требования.
  • value: неотрицательное числовое значение с 3 по умолчанию.

Несколько лет go я запрограммировал предварительные версии вышеуказанного функционала. Однако в то время мы выбрали другое решение.

Может быть, у других были похожие идеи? Что-то подобное уже доступно в r?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...