包括包装中的shinyBS

时间:2018-10-04 14:24:10

标签: r shiny package shinybs

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

所以问题是:如何生成,部署和运行自己的Shiny软件包,而不必强迫用户预先加载ShinyBS(执行'library(shinyBS)')?!

谢谢!

2 个答案:

答案 0 :(得分:3)

向R程序包添加依赖项的通常方法是将程序包添加到Imports文件的DESCRIPTION字段中。这是Hadley Wickam's introduction的改编版本。

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文件中的importsFrom中指定软件包中实际需要NAMESPACE软件包中的哪些功能。另外,您也可以使用

导入所有shinyBS函数
import(shinyBS)

但是,对于shinyBS,由于为该程序包定义了Depends钩子的方式,实际上您将需要将依赖项放在onLoad/onAttach字段中。有关更多详细信息,请参见here。因此,您的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是解决您所描述问题的可行方法。

答案 1 :(得分:1)

您应使用NAMESPACE声明需要将shinyBS装入您的包裹中。

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

import(shinyBS)

此外,如@ r2evans所注意到的那样,您应该在shinyBS文件的Imports部分中添加DESCRIPTION

Imports: shinyBS

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