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

У меня есть пакет, который предоставляет скрипт и некоторые функции.Внутри скрипта я назначаю переменную, которая будет использоваться функцией.Это работает, если функция выполняется внутри скрипта, но может произойти сбой, если я просто вызову функцию, поскольку переменная не существует.

Если я использую devtools::check(), я получаю предупреждения о том, что переменная в функции isnне определены.Как я могу справиться с этим правильно?

Редактировать

Я собираюсь использовать get() в функции, чтобы назначить переменную в функции, чтобы избавиться от этого предупреждения.Итак, вопрос в том, является ли myp2 правильный способ сделать что-то подобное?Может быть, trycatch для обработки ошибок?

ab <- c(1,2,3)

myp1 <- function() {
  print(ab)
  return(1)
}

myp2 <- function() {
  ab <- get('ab')
  print(ab)
  return(1)
}

myp1()
myp2()

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018
myp <- function(x) {
  print(x)
  return(1)
}

ab <- c(1,2,3)

myp(x = ab)

Если возможно, было бы также лучше заменить скрипт на функцию.

0 голосов
/ 12 декабря 2018

Вы можете сделать что-то вроде

if(!exists("your variable")){
stop("You have not defined your variable")}

Это позволит проверить, существует ли то, что вы ищете.Лучше было бы определить переменную в функции и указать в качестве значения по умолчанию имя того, что вы ищете.

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