我正在使用RStudio创建自己的软件包,到目前为止一直运行良好.当我现在通过RStudio的'Build Source Package'构建一个包(将包从我的Windows机器移动到Linux机器)时,一切似乎都很好.我在Linux机器上安装软件包,用require(或库)加载它,但是找不到任何功能!错误是object 'somefunction' not found并且myPackage::somefunction表示没有导出此类对象.事实上,如果我在RStudio中查看myPackage的环境,它会显示它是空的.
RStudio通过创作说:
==> roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace', 'vignette'))
First time using roxygen2. Upgrading automatically...
Writing NAMESPACE
Warnmeldung:
Paket 'nlme' wurde unter R Version 3.2.5 erstellt
Documentation completed
==> Rcmd.exe build myPackage
* checking for file 'myPackage/DESCRIPTION' ... OK
* preparing 'myPackage':
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
Removed empty directory 'myPackage/data' …Run Code Online (Sandbox Code Playgroud) 我想用我写的一些函数构建一个包。现在我的问题是,我不能将管道运算符 %>% 与 dplyr 一起使用。我用 roxygen2 创建了这个包。
如果我编写没有 %>% 的 dplyr 命令,一切正常。
代码里面:
#'
#' @import dplyr readr mailR writexl
#' @importFrom dplyr %>%
#' @name %>%
#'
#' @export
#'
Run Code Online (Sandbox Code Playgroud)
我写:
描述
LazyData: true
RoxygenNote: 6.0.1
Imports: dplyr
Run Code Online (Sandbox Code Playgroud)
roxygen2 生成:
命名空间
...
importFrom(dplyr,"%>%")
...
Run Code Online (Sandbox Code Playgroud) 我正在创建一个包含一些功能的包。只需要一项辅助功能plotly。
但是,当我使用安装时,devtools我收到一条注释unused arguments in layout(yaxis = ay,...然后我阅读了Hadley 的关于vs 的文章importsdepends。使用 import 不会删除注释,但在 NAMESPACE 文件中添加plotlywith可以解决问题。depends
接下来我读了有关“搜索路径”的段落。哈德利在这里指出
您永远不应该在包中使用 require() 或library():相反,请使用描述中的 Depends 或 Imports 字段
我现在的问题是,使用的功能plotly更多的是软件包的附加组件。所有其他(更重要的)功能都可以与 base-R 一起使用。因此我plotly只想将其用于需要它的一个功能。
install?require东西这么坏?libraryrequireNamespace先用然后再用可以吗require?这是一些示例代码:
#' Some plotly function
#'
#' Some very long description
#'
#' @param x_vec A numeric vector
#' @param y_vec A numeric vector
#' @keywords …Run Code Online (Sandbox Code Playgroud) 我正在记录一个内部的非导出函数。@export即使文档中没有标签,roxygen2 也会创建一个 Rd 文件。roxygen2 为以下文档创建了一个 Rd 文件。我缺少什么?
#' Check validity of a
#' @param a A logical value
arg_check_a = function(a) {
if (!is.logical(a)) {
stop("a must be a logical value")
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用roxygen2为引用类对象创建文档,但是当我运行R CMD检查时,我不断收到此警告:
S4 class codoc mismatches from documentation object 'myRefClass-class':
Slots for class 'myRefClass'
Code: .xData
Inherited: .xData
Docs: field1 field2
Run Code Online (Sandbox Code Playgroud)
这是与上述警告相关的ref class和roxygen2块:
#' @title myRefClass class
#' @description Description of myRefClass
#' @import methods
#' @exportClass myRefClass
#' @slot field1 A character slot
#' @slot field2 A numeric slot
myRefClass<-setRefClass(Class="myRefClass",
fields=list(field1="character",
field2="numeric"))
Run Code Online (Sandbox Code Playgroud)
以下是生成的R文档:
myRefClass-class {testPackaging} R文档myRefClass类
描述
myRefClass的描述
老虎机
field1字符槽
field2数字槽
至于我能找到的文档,codoc正在测试我的代码和文档之间的一致性.据我所知,所有的插槽名称都是一样的; 也许我错过了什么.不确定文档是否应该自动将其标记为引用类,或者我是否应该以某种方式指出?我发现R文档表明插槽".xData用于启用异常类型的继承",但我不确定为什么它适用于我在这里做的或者我应该用它做什么.
我已经尝试了一些roxygen标签的排列并且保持接近这里发现的结构似乎给了我最好的结果/来自R CMD检查的最少警告:Roxygen2 - 如何@export参考类生成器? 我一直在网上寻找roxygen2应该如何与参考类一起使用的例子; 也许我正在寻找错误的地方 - 我运气不好.
我正在使用roxygen2 v 3.1.0/RStudio版本0.98.501/R版本3.0.3/OSX 10.9.2(注意:尝试升级到roxygen2 v 4.0并且它在引用类上完全被阻塞,以至于没有文档存在根本生成)
如果有人知道使用roxygen2和引用类的CRAN包,那么我可能会看到它是如何正确完成的,或者如果有人知道我做错了什么,那么帮助将非常感激.我是R的包装建筑的新手.
我正在尝试在我的包中添加一个函数示例.那是因为我想使用roxygen2.我正在做以下(只是我的代码的一部分,在roxygen2文档的末尾,直到函数的代码开始...
#' @import EcoHydRology
#' @export
#' @example
#' Tx <- 29
#' Tn <- 13
#' rain <- 100
#' lat <- 1
#' Ion <- 10
#' DOY <- 44
#' z <- 450
#' c <- 2.4
#' B <- 0.004
#'
#' BC_alt(Tx, Tn, rain, lat, lon, DOY, z, c, B)
BC_alt <- function(Tx, Tn, rain, lat, lon, DOY, z, c, B){
#Extraterrestrial solar radiation (with EcoHydRology package)
lat_rad <- lat*pi/180
A <- 0.75+(2*10^(-5)*z)
Run Code Online (Sandbox Code Playgroud)
...所以,当我尝试构建和重新加载时,我收到一条错误消息
> …Run Code Online (Sandbox Code Playgroud) 我的包中有两个对象(page.height和page.width)sysdata.rda.我已经roxygen2像这样记录了他们
#'@name page.height
#'@aliases page.width
#'@title Standard dimensions
#'\itemize{
#' \item{page.height}{Maximal height of a figuur (in inch)}
#' \item{page.width}{Width of a figure covering two columns (in inch)}
#'}
#'@docType data
#'@export
#'@usage page.height
#'@keywords datasets
NULL
Run Code Online (Sandbox Code Playgroud)
该page.height对象被导出,但page.width对象不是.我应该如何记录这一点,以便将它们导出并记录在同一个帮助文件中?
我们如何才能准确地分辨出 R 包是在哪个 R 版本下构建的?
在此处的 RSelenium 包DESCRIPTION文件中,我们看到
Depends:
R (>= 3.0.0)
Run Code Online (Sandbox Code Playgroud)
但这似乎并不准确(由于>符号)
Karl Browman 的网站说:
Depends 用于指示对特定版本的 R 的依赖,以及在加载包时要加载的包(使用 library())。如果您希望用户在每次加载您的包时都希望加载其他包,那么您应该在此处包含包名称。但是现在这种情况比较少见。(我认为这些包的命名空间也应该用@import 导入。)