在R函数中访问全局变量是否有效以及如何在包中分配它?

时间:2018-12-12 13:02:25

标签: r package

我有一个提供脚本和一些功能的包装。在脚本中,我分配了一个将由函数使用的变量。如果该函数在脚本中执行,则可以使用此方法,但是由于变量不存在,如果我仅调用该函数,则可能会失败。

如果我使用devtools::check()会收到警告,说明函数中的变量未定义。我该如何正确处理?

编辑

我正在考虑在函数内使用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 :(得分:0)

您可以做类似

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

这将检查您要查找的内容是否存在。更好的做法是在函数中定义变量,并使用默认值作为要查找的事物的名称。

答案 1 :(得分:0)

myp <- function(x) {
  print(x)
  return(1)
}

ab <- c(1,2,3)

myp(x = ab)

如果可能的话,最好用函数代替脚本。