标签: roxygen2

使用Roxygen记录setAs()和setOldClass()

我正在开发一个提供名为"Foo"的S3类的包.它还提供了一种"as"方法,用于将其强制转换为名为"Bar"的(其他人)S4类.我的代码看起来像这样:

#' ...
setOldClass("Foo")

#' ...
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})
Run Code Online (Sandbox Code Playgroud)

编辑我试过这个:

#' ...
#' @name as
#' @export
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})
Run Code Online (Sandbox Code Playgroud)

但是我从R CMD检查得到这个:

检查是否可以使用声明的依赖项加载名称空间...警告namespaceExport(ns,exports)中的错误:undefined exports:as Calls:loadNamespace - > namespaceExport Execution halted

命名空间必须只能加载基础命名空间:否则如果命名空间被保存的对象加载,则会话将无法启动.

可能需要在NAMESPACE文件中声明一些导入.

在一个单独的.R文件中,我有:

#' @importClassesFrom sp SpatialPointsDataFrame
Run Code Online (Sandbox Code Playgroud)

我正在使用hadley的devtools包,所以我猜它是roxygen2.这就是我做的:

R> document("MyPackage")
Run Code Online (Sandbox Code Playgroud)

r roxygen2

6
推荐指数
1
解决办法
937
查看次数

使用roxygen2标签@inheritParams时,.Rd文件中的参数说明顺序

假设我正在编写一个包含两个函数的小R包,除了一个之外,它们具有相同的参数.这是一个例子:

fct1 <- function(r, K){...}
fct2 <- function(r, p, K){...}
Run Code Online (Sandbox Code Playgroud)

在我的第一个函数的roxygen2文档中,我使用以下标记:

#' @param r description of argument r
#' @param K description of argument K
Run Code Online (Sandbox Code Playgroud)

对于第二个函数,我使用以下标记:

#' @param p description of argument p
#' @inheritParams fct1
Run Code Online (Sandbox Code Playgroud)

在使用roxygenize处理我的代码之后,函数fct2的.Rd文件按以下顺序显示参数:p,r,K.我希望它们的顺序与使用部分中的顺序相同,即:r, p,K.如何在不手动更改.Rd文件的情况下获取此订单?

我坚持使用@inheritParams来避免复制和粘贴.

谢谢!

r roxygen2

6
推荐指数
1
解决办法
909
查看次数

roxygen2 + cygwin +默认参数=截断的`\ usage`部分

我有一个R的软件包我一直在Linux下开发,而且我在Windows下测试它的时候已经到了.

文档是使用roxygen完成的,我正在使用cygwin来构建软件包.

问题是,当我roxygenise('test-package'),roxygen \usage将文档的部分截断为一个字符.它对一些但不是我的所有功能都这样做,我无法弄清楚这种模式.

roxygenise('test-package')在Linux或Windows下运行相同的命令(即从R提示符)时不会发生这种情况- 只是在Windows下的Cygwin(使用R devtools +来自Windows的命令提示符对我来说不是一个选项 - 它是Makefile的一个大项目的一部分等等).

在所有情况下,我使用roxygen v2.2.2.


更新:

对于具有默认参数的任何函数,都会出现这种情况.


我把它归结为一个可重复的例子,尽可能地减少以解决问题:

  1. 来自R:

    # this function used to trim strings, but I've stripped it right down
    # to eliminate it as a cause of the problem
    trim <- function(x='asdf')
    {
        return( x )
    }
    package.skeleton('test')
    
    Run Code Online (Sandbox Code Playgroud)
  2. 修改trim.R(在test/R中)并将以下roxygen添加到顶部,因此文件如下所示:

    #' trim white spaces from a string
    #'
    #' @param x string or vector of strings to trim
    #' @return x trimmed.
    #' @export
    trim …
    Run Code Online (Sandbox Code Playgroud)

cygwin r roxygen roxygen2

6
推荐指数
1
解决办法
170
查看次数

roxygenise只需一个.R文件将文件及其文档添加到包中

我创建了一个包并将其推送到github,这样devtools功能install_github()函数便于安装.即github repo文件结构是这样的,DESCRIPTION并且NAMESPACE它们/R/man包含每个函数的*.R文件和*.Rd文件的文件夹一起位于顶部.

我现在想通过添加新功能对它进行一些升级.

#'在每个新.R文件中都有函数上面的所有相关的roxygen type()文本,但是找不到roxygen2或者相关的包函数有助于读取.R文件并编写相关.Rd文件,希望这不是太难...我想我要求的是,是否可以将一个文件加热到另一个现有的包中?这样它也可以更新DESCRIPTION,NAMESPACE文件.所以我可以添加,提交并将所有这些更改推送到github上的远程仓库?

r roxygen2

6
推荐指数
1
解决办法
770
查看次数

我应该如何引用导入包中的函数?

创建R包时,至少有两种方法可用于引入导入包中的函数.

要么,

  1. 无论何时调用它,都使用双冒号运算符明确命名该函数package::function.

  2. 直接或通过roxygen标签添加importFrom(package, function)NAMESPACE文件中#' @importFrom package function.

每种方法有哪些优缺点?

每种语法实现的技术差异是否存在?

namespaces r roxygen2

6
推荐指数
1
解决办法
410
查看次数

创建具有依赖项的R包

我正在尝试编写我的第一个R包.包中的函数取决于RCurl包中的getURL()函数.我按照以下教程:http: //r-pkgs.had.co.nz/http://hilaryparker.com/2014/04/29/writing-an-r-package-from-scratch/

我安装了RTools,devtools和roxygen2来编写文档和构建软件包.

我的包名是"waterml".在我的包中,我有文件夹R,包含3个文件GetSites.R,GetVariables.R,GetValues.R.每个文件都有一个功能:

#' GetSites
#' @import XML
#' @importFrom RCurl getURL
#' This function gets the table of sites from the WaterML web service
#' @param server The URL of the web service ending with .asmx,
#'  for example: http://worldwater.byu.edu/interactive/rushvalley/services/cuahsi_1_1.asmx
#' @keywords waterml
#' @export
#' @examples
#' GetSites("http://worldwater.byu.edu/interactive/rushvalley/services/cuahsi_1_1.asmx")

GetSites <- function(server) {
  sites_url <- paste(server, "/GetSitesObject", sep="")
  text <- RCurl::getURL(sites_url)
  doc <- xmlRoot(xmlTreeParse(text, getDTD=FALSE, useInternalNodes = TRUE))
  return(doc)
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试构建包:

library(devtools)
document()
Run Code Online (Sandbox Code Playgroud)

document()步骤完成且没有错误.现在我跑: …

dependencies r package rcurl roxygen2

6
推荐指数
1
解决办法
948
查看次数

为什么不安装此R包,我该如何解决?

我想在R包中包含一个Fortran子例程.我一直只使用devtools和roxygen构建包(所以我的知识可能非常有限).我收到一个错误,阻止我在安装包之后安装它不是Win32应用程序...

我使用的是Rtools 3.3.我的会话信息:

> sessionInfo()
R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] roxygen2_5.0.1 devtools_1.9.1

loaded via a namespace (and not attached):
[1] magrittr_1.5  tools_3.2.2   Rcpp_0.12.1   memoise_0.2.1 stringi_1.0-1 stringr_1.0.0 digest_0.6.8 
Run Code Online (Sandbox Code Playgroud)

要初始构建包,我运行这个:

library(devtools)
library(roxygen2)

setwd("C:/panterasBox")
create("myPack")
setwd("C:/panterasBox/myPack")
dir.create("C:/panterasBox/myPack/src")
Run Code Online (Sandbox Code Playgroud)

这是fortran代码,在/src文件中保存为myFunc.f :

         subroutine myFunc(x)
         implicit …
Run Code Online (Sandbox Code Playgroud)

fortran r devtools roxygen2 r-package

6
推荐指数
1
解决办法
778
查看次数

C++函数不可用

我有以下文件cumsum_bounded.cpp

#include <Rcpp.h>
using namespace Rcpp;

//' Cumulative sum.
//' @param x numeric vector
//' @param low lower bound
//' @param high upper bound
//' @param res bounded numeric vector
//' @export
//' @return bounded numeric vector
// [[Rcpp::export]]
NumericVector cumsum_bounded(NumericVector x, double low, double high) {
    NumericVector res(x.size());
    double acc = 0;
    for (int i=0; i < x.size(); ++i) {
        acc += x[i];
        if (acc < low)  acc = low;
        else if (acc > high)  acc = high;
        res[i] …
Run Code Online (Sandbox Code Playgroud)

r devtools rcpp roxygen2

6
推荐指数
1
解决办法
1365
查看次数

在CMD检查期间,Roxygen示例中的“找不到功能”

我正在RStudio中的一个软件包上运行CMD检查,其中的一部分分析@examples了内联Roxygen文档中的内容。

我收到此错误:

checking examples ... ERROR
Running examples in ‘packagename-Ex.R’ failed
The error most likely occurred in:

> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: checkDate
> ### Title: Ensure that a date string is a valid date
> ### Aliases: checkDate
> 
> ### ** Examples
> 
> checkDate("2017-05-06")
Error: could not find function "checkDate"
Run Code Online (Sandbox Code Playgroud)

在我的.R文件中,文档定义为:

#' Ensure that a date string is a valid date
#'
#' @param dateString A string (eg. "2017-12-04").
#' @return …
Run Code Online (Sandbox Code Playgroud)

r devtools roxygen2

6
推荐指数
1
解决办法
1038
查看次数

尝试使用devtools :: install()安装本地R软件包时,“超出API速率限制”

包开发初学者在这里!

我正在尝试第一次将一些代码转换为本地R包。我使用制作了一个软件包usethis::create_package(),并使用添加了文档devtools::document()

现在,在玩了一段时间后,尝试使用安装最新版本时遇到了以下错误devtools::install()

Error: HTTP error 403.
  API rate limit exceeded for [my IP]. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

  Rate limit remaining: 0/60
  Rate limit reset at: 2019-03-18 16:32:05 UTC

  To increase your GitHub API rate limit
  - Use `usethis::browse_github_pat()` to create a Personal Access Token.
  - Use `usethis::edit_r_environ()` and add the token as `GITHUB_PAT`.
Run Code Online (Sandbox Code Playgroud)

如果使用,问题仍然存在devtools:install_local("my_folder_name")。真正令我困惑的是,我试图通过安装位于本地文件夹中的软件包来达到GitHub速率限制。 …

r devtools roxygen2

6
推荐指数
1
解决办法
423
查看次数

标签 统计

r ×10

roxygen2 ×10

devtools ×4

cygwin ×1

dependencies ×1

fortran ×1

namespaces ×1

package ×1

r-package ×1

rcpp ×1

rcurl ×1

roxygen ×1