Как сказать RStudio автоматически заполнять аргументы моей функции именами пакетов? - PullRequest
0 голосов
/ 08 ноября 2018

Согласно RStudio:

Кроме того, некоторые функции, такие как library () и require (), ожидают имена пакетов для дополнений.RStudio автоматически определяет, ожидает ли конкретная функция имя пакета и предоставляет эти имена в качестве завершения ...

Мой вопрос: как?Я пишу пользовательскую функцию, которая принимает имена пакетов в качестве аргументов, но RStudio только дополняет аргументы именами объектов и функций, и я не могу сказать, что это за код library() и require(), который RStudio принимает

Моя функция:

unpack <- function(...,
                   lib   = NULL,
                   repos = getOption("repos")) {
  pkgs <- sapply(match.call(expand.dots = TRUE)[-1], as.character)
  new.pkgs <-
    pkgs[!(
      pkgs %in% installed.packages(lib.loc = lib)[, "Package"]
    )]
  if (length(new.pkgs))
    install.packages(new.pkgs,
                     lib   = lib,
                     repos = repos)
  sapply(pkgs, require,
         lib.loc = lib,
         character.only = TRUE)
}

1 Ответ

0 голосов
/ 08 ноября 2018

Как указывал @hrbrmstr, есть и код Java, и код R, которые специально называют четыре функции, которые автоматически заполняются именами пакетов, поэтому решение состоит в том, чтобы либо замаскировать одну из них и скрестить пальцы, либо добавить имя вашей функции в эти списки.в обоих исходных файлах (или, может быть, просто R, мне интересно).

...