0

当我构建、加载和运行我自己的包时,如果我事先加载带有“库(shinyBS)”的shinyBS,它只会使用shinyBS功能,否则工具提示不起作用..虽然闪亮的应用程序有效(没有shinyBS功能)有网页可以通过浏览器控制台看到的错误..(关于一些丢失的文件..shinyBS.css 和 shinyBS.js)

所以问题是:我如何生成、部署和运行我自己的闪亮包而不强制用户预先加载闪亮BS(做'library(shinyBS)')?!

谢谢!

4

2 回答 2

5

向 R 包添加依赖项的常用方法是Imports在文件的字段中添加包DESCRIPTION。这是来自Hadley Wickam 介绍的改编版本。

Package: mypackage
Title: What The Package Does (one line, title case required)
Version: 0.1
Authors@R: person("First", "Last", email = "first.last@example.com",
                  role = c("aut", "cre"))
Description: What the package does (one paragraph)
Depends: R (>= 3.1.0), shiny
Imports: shinyBS
License: What license is it under?
LazyData: true

然后,您需要在文件中指定包shinyBS中实际需要的包中的哪些函数。或者,您也可以使用importsFromNAMESPACEshinyBS

import(shinyBS)

但是,在 的情况下,由于为该包定义挂钩的方式shinyBS,您实际上需要将依赖项放在Depends字段中。onLoad/onAttach有关更多详细信息,请参见此处。因此,您的DESCRIPTION文件应类似于以下示例

Package: mypackage
Title: What The Package Does (one line, title case required)
Version: 0.1
Authors@R: person("First", "Last", email = "first.last@example.com",
                  role = c("aut", "cre"))
Description: What the package does (one paragraph)
Depends: R (>= 3.1.0), shiny, shinyBS
License: What license is it under?
LazyData: true

这是非常不寻常的,在我看来,这个问题应该由shinyBS开发人员解决。但是,与此同时,使用该Depends字段确保shinyBS已附加是您描述的问题的可行解决方法。

于 2018-10-05T16:01:00.587 回答
1

你应该使用NAMESPACE来声明你需要shinyBS在你的包中加载。

例如,在您的NAMESPACE文件中,您应该这样做:

import(shinyBS)

此外,正如@r2evans 所指出的,您应该shinyBS在文件的Imports一部分中添加DESCRIPTION

Imports: shinyBS

有关更多信息,请查看 Hadley Wickam 的 R 包网站:http: //r-pkgs.had.co.nz/namespace.html#imports 。

于 2018-10-04T14:33:19.147 回答