Как я могу поместить выходные данные фабрики функций в пакет R, если он полагается на входные данные, а не на свои аргументы? - PullRequest
1 голос
/ 08 марта 2019

Я использую фабрику функций, определенную кем-то другим, и не могу ее изменить. Обычно в начале каждого запуска нужно создавать несколько функций с этой фабрикой. В моем примере с игрушкой мне кажется, что мне часто нужно много таких power_ функций. В настоящее время, как пользователь otherpackage, я должен включить строки типа power2 <- power_factory(2) в свои скрипты.

otherpackage::power_factory <- function(exp) {
  function(x) {
    x ^ exp
  }
}

power2 <- power_factory(2)
power3 <- power_factory(3)

Я бы хотел избежать этих строк, написав свой собственный пакет, поэтому вместо этого я могу использовать mypackage::power2() в своих скриптах. Обычно, если бы я хотел обернуть эти функции в пакет, я мог бы просто использовать фабрику для сборки их внутри пакета. Однако эта фабрика зависит от некоторого внешнего ввода, здесь credential, которое я не могу записать в свой пакет. Это делает заводскую ошибку, если я помещаю power2 <- power_factory(2) внутри пакета:

# credential <- "my_secret"
otherpackage::power_factory <- function(exp) {
  print(credential)
  function(x) {
    x ^ exp
  }
}

power2 <- power_factory(2)
#> Error in print(credential): object 'credential' not found

Создано в 2019-03-07 пакетом Представление (v0.2.1)

Есть ли способ обойти эту проблему? Конечная цель, как указано выше, состоит в том, чтобы иметь возможность вызывать mypackage::power2() вместо необходимости делать power2 <- power_factory(2) и множество вариантов таких в начале каждого сценария.

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