创建新的 R 包时如何修复“没有可见的全局函数定义”
How to fix `no visible global function definition` when creating a new R-package
我尝试构建一个使用库 tidyverse
的 R 包。
描述文件如下所示:
Package: myFirstPackage
Title: A initial package
Version: 0.0.1.0
Authors@R:
person(given = "Test",
family = "Test",
role = c("aut", "cre"),
email = "first.last@example.com",
comment = c(ORCID = "YOUR-ORCID-ID"))
Description: a description.
Imports: tidyverse
License: GPL-2
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.1.1
所以我在 Imports
部分添加了 tidyverse
。
我的 R 代码如下所示:
myfunction<-function(){
x<-tibble(
id = c(1, 2, 3, 4),
name = c("Louisa", "Jonathan", "Luigi", "Rachel"),
female = c(TRUE, FALSE, FALSE, TRUE)
)
x %>% pull(id)
}
#' MyDemoFunction
#'
#'
#' @import tidyverse
#' @export
say_hello<-function(){
cat("here1")
myfunction()
}
还有这里,我有导入。
我正在使用 R-Studio,当我按下 Check 时,我得到:
> checking R code for possible problems ... NOTE
myfunction: no visible global function definition for 'tibble'
myfunction: no visible global function definition for '%>%'
myfunction: no visible global function definition for 'pull'
myfunction: no visible binding for global variable 'id'
Undefined global functions or variables:
%>% id pull tibble
您找到项目的 repo here。
在 the problem was solved by importing function by function but I want to have complete import of the package: I simply want to use all function of tidyverse without defining each of them explicitly. In the question here 中提到导入必须在我已有的描述中!
我的清洁检查解决方案。您需要 R 4.1.0 才能使用 |> 运算符。
plainSrc.R:
####This File represents a package used for Index Management
### Overall approach of this package ###
# In order to avoid a static hard coding of the index members
# we use a web-based approach based on finanzen.de from there we
# get the index members for which we offer the data.
#' @import dplyr
#'
myfunction<-function(){
x <- dplyr::tibble(
id = c(1, 2, 3, 4),
name = c("Louisa", "Jonathan", "Luigi", "Rachel"),
female = c(TRUE, FALSE, FALSE, TRUE)
)
x |> dplyr::pull(one_of("id"))
}
#' MyDemoFunction
#'
#'
#' @export
#'
say_hello<-function(){
cat("here1")
myfunction()
}
并将描述中的导入从 tidyverse 更改为 dplyr。
我尝试构建一个使用库 tidyverse
的 R 包。
描述文件如下所示:
Package: myFirstPackage
Title: A initial package
Version: 0.0.1.0
Authors@R:
person(given = "Test",
family = "Test",
role = c("aut", "cre"),
email = "first.last@example.com",
comment = c(ORCID = "YOUR-ORCID-ID"))
Description: a description.
Imports: tidyverse
License: GPL-2
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.1.1
所以我在 Imports
部分添加了 tidyverse
。
我的 R 代码如下所示:
myfunction<-function(){
x<-tibble(
id = c(1, 2, 3, 4),
name = c("Louisa", "Jonathan", "Luigi", "Rachel"),
female = c(TRUE, FALSE, FALSE, TRUE)
)
x %>% pull(id)
}
#' MyDemoFunction
#'
#'
#' @import tidyverse
#' @export
say_hello<-function(){
cat("here1")
myfunction()
}
还有这里,我有导入。
我正在使用 R-Studio,当我按下 Check 时,我得到:
> checking R code for possible problems ... NOTE
myfunction: no visible global function definition for 'tibble'
myfunction: no visible global function definition for '%>%'
myfunction: no visible global function definition for 'pull'
myfunction: no visible binding for global variable 'id'
Undefined global functions or variables:
%>% id pull tibble
您找到项目的 repo here。
在
我的清洁检查解决方案。您需要 R 4.1.0 才能使用 |> 运算符。
plainSrc.R:
####This File represents a package used for Index Management
### Overall approach of this package ###
# In order to avoid a static hard coding of the index members
# we use a web-based approach based on finanzen.de from there we
# get the index members for which we offer the data.
#' @import dplyr
#'
myfunction<-function(){
x <- dplyr::tibble(
id = c(1, 2, 3, 4),
name = c("Louisa", "Jonathan", "Luigi", "Rachel"),
female = c(TRUE, FALSE, FALSE, TRUE)
)
x |> dplyr::pull(one_of("id"))
}
#' MyDemoFunction
#'
#'
#' @export
#'
say_hello<-function(){
cat("here1")
myfunction()
}
并将描述中的导入从 tidyverse 更改为 dplyr。