如何将 R6 class 导入包中?

How to import an R6 class into a package?

我想在我的个人包中使用函数,该包建立在 Microsoft365R 包内定义的名为 ms_team 的 R6 class 之上。现在这些函数都失败了,因为即使我导入了我需要的函数,当我尝试调用一个依赖它们的函数时,我得到一个错误,指出找不到这个对象。

Error in login$get_team(team_id) : object 'ms_team' not found

我试图在我的函数中包含 @importFrom Microsoft365R ms_team ...,但没有成功。在包中使用依赖于外部定义的 R6 classes 的函数的魔法词是什么?

此处为 Microsoft365R 开发人员。我假设您使用的是 roxygen2。

要从另一个包中导入导出的对象(任何对象,而不仅仅是 R6 class),请输入

#' @importFrom pkgname objname
NULL

在您的包的一个 R 文件中。在这种情况下,你会做

#' @importFrom Microsoft365R ms_team
NULL

虽然导入整个包可能更容易,也更可靠:

#' @import Microsoft365R
NULL

例如,请参阅 here 了解我如何将 AzureGraph 包导入 Microsoft365R 本身。

从版本 2.3.1(2021 年 9 月)开始,可以使用 Microsoft365R 而无需搜索列表中的软件包。

这意味着您不必再导入整个包。您现在可以在 DESCRIPTION 文件中将 Microsoft365R 添加到 Imports,并像 Microsoft365R::function() / Microsoft365R::object.

一样调用 functions/objects