标签: roxygen

在编写自己的R包时,我似乎无法正确导入其他包

好吧,第一次尝试写一个R包,我被卡住了.这是我创建包的方式:

package.skeleton("pkg",code_files=some.filenames)
roxygenize("okg")
Run Code Online (Sandbox Code Playgroud)

我正在使用roxygen2并在我的"pkg-package.R"文件中输入以下内容:

@import data.table zoo lubridate
Run Code Online (Sandbox Code Playgroud)

从终端,我然后运行:

R CMD build pkg
R CMD check pkg
R CMD install pkg
Run Code Online (Sandbox Code Playgroud)

在检查阶段,我收到以下警告:

**为延迟加载准备包
警告:在加载'lubridate'时替换先前导入'hour'
警告:在加载'lubridate'时
替换先前导入'mday'
警告:在加载'lubridate'时替换先前的导入'月' 警告:替换之前的加载'lubridate'时导入'wday'
警告:加载'lubridate'时替换上一个导入'周'
警告:加载'lubridate'时替换上一个导入'yday'
警告:加载'lubridate'时替换上一个导入'year'
**帮助
*安装帮助索引
**构建软件包索引...
**测试是否可以加载已安装的软件包
警告消息:
1:在加载'lubridate'时替换先前导入'小时'
2:在加载'lubridate时替换先前导入'mday' '
3:在加载'lubridate'时替换先前导入'月'
4:在加载'lubridate'时替换先前导入'wday'5:在加载'lubridate'时
替换先前的导入'周'
6:在加载时替换先前导入'yday' "lubrid 吃''
7 ' :加载'lubridate'时替换上一个导入'年'

我真的不确定如何制作这些,但它们似乎是覆盖命名空间中的东西的典型警告.在任何情况下,我都可以安装软件包,但是当我尝试使用它时会发生什么:

library(pkg)
覆盖POSIXt,Date和difftime的+和 - 方法
警告消息:
1:在加载'lubridate'时
替换先前导入'hour'2:在加载'lubridate'时替换先前导入'mday'3
:替换先前导入' '加载'lubridate'时的'月':加载'lubridate'时
替换先前导入'wday'5:加载'lubridate'时
替换上一个导入'周'
6:加载'lubridate'时替换上一个导入'yday'7
:替换之前的加载'lubridate'时导入'年'
d < - my.function(arg1,arg2)
MATCH中的错误(x,x):找不到函数"MATCH"

使用traceback(),我发现这是在调用merge.zoo()期间生成的.所以我尝试在我的R会话期间手动加载动物园,然后功能正常,没有错误消息.

我已经尝试在"pkg-package.R"文件和NAMESPACE中手动更改导入的顺序.根据我在其他地方找到的东西,我没有添加任何Imports或Depends来描述.救命?

import namespaces r roxygen

30
推荐指数
1
解决办法
5969
查看次数

我应该如何处理R包中的'helper'函数?

背景

我写了一个R包,现在是一个合作者(最近的CS毕业生,他是R的新手)正在编辑和重构代码.在这个过程中,他将我的功能划分为更小,更通用的功能.

他的所作所为是有道理的,但是当我开始时package.skeleton(),每个功能都有一个文件.现在,他添加了主要功能所依赖的功能,但这可能在功能本身之外的使用有限.

他建议所有函数都放在一个文件中,但我反对,因为当我们处理不同的文件时,它更容易进行版本控制.

我已经开始使用roxygen来记录文本中的每个功能.

处理函数的推荐方法是什么:显然辅助函数应该与main函数保持一致,但是我需要在多大程度上记录辅助函数?

@export评论中的建议很有帮助,但我很想知道其他人如何组织他们的代码.

coding-style r package roxygen

28
推荐指数
1
解决办法
4425
查看次数

Roxygen:如何设置默认参数,包括反斜杠('\')到函数

我使用Roxygen来生成正在开发的包的Rd文件,但是我的函数默认参数设置为' \n',例如:

  lineCount <- function(text, sep='\n') {
       ...
   }
Run Code Online (Sandbox Code Playgroud)

用于计算'\n'字符串中的新line()字符的目的是什么.问题是R CMD检查发出警告:

Codoc mismatches from documentation object 'lineCount':
lineCount
  Code: function(text, sep = "\n")
  Docs: function(text, sep = " ")
  Mismatches in argument default values:
    Name: 'sep' Code: "\n" Docs: " "
Run Code Online (Sandbox Code Playgroud)

在我看来,这个问题是由写入Rd文件引起的(写入标准的LaTeX文件cat()总是需要为某种目的双重转义字符,例如:\\newline - 正如我所经历的那样).如果我在分隔符上添加一个额外的反斜杠,例如:

  lineCount <- function(text, sep='\\n') {
       ...
   }
Run Code Online (Sandbox Code Playgroud)

这个问题仍然存在,就像它看起来的代码一样'\\n',但在文档(Rd文件)中它看起来像'\n'.

我的问题有一个简单的解决方案吗?可能是Roxygen中的额外标签,它可以定义如何将函数的参数写入Rd文件?对不起,如果被问到太明显的问题,但我在谷歌ing一段时间后迷路了.


历史:http://permalink.gmane.org/gmane.comp.lang.r.roxygen/24


更新:使用roxygen2!

r roxygen

22
推荐指数
1
解决办法
1210
查看次数

使用Roxygen2模板标签

有人可以举例说明如何正确使用模板标签Roxygen2.我试图做最明显的事情(对我来说):

在我的packageName-package.R档案中:

 #' [... other Roxygen blocks ...]
 #' 
 #' @templateVar testTemplateTag Testing one two
 NULL
Run Code Online (Sandbox Code Playgroud)

然后在someFunction.R文件中

 #' [... other Roxygen blocks ...]
 #'
 #' @template testTemplateTag
Run Code Online (Sandbox Code Playgroud)

我收到错误:

 Error : Can not find template testTemplateTag
Run Code Online (Sandbox Code Playgroud)

我试图有一个地方来记录通常重复的定义示例等.当这些东西嵌套在我一直在使用的一组函数中时@inheritParms.但有些东西,如定义和其他描述,在几个地方使用.我已经搜查高和低的使用@template@templateVar并没有发现任何东西.

谢谢.

r roxygen roxygen2

22
推荐指数
1
解决办法
2277
查看次数

自动记录数据集

我现在正在开展一个项目,我从一堆不同的来源慢慢积累了一堆不同的变量.作为一个有点聪明的人,我在主"original_data"目录下为每个子目录创建了一个不同的子目录,并包含一个.txt文件,其中包含我从中获取数据的URL和其他描述符.作为一个不够聪明的人,这些.txt文件没有结构.

现在,我面临着编译一个记录所有不同数据源的方法部分的任务.我愿意经历并为数据添加结构,但后来我需要找到或构建一个报告工具来扫描目录并提取信息.

这似乎ProjectTemplate已经存在,但我似乎无法在那里找到那种功能.

这样的工具存在吗?

如果没有,应该考虑哪些因素才能提供最大的灵活性?一些初步想法:

  1. 应该使用标记语言(YAML?)
  2. 应扫描所有子目录
  3. 为了便于(2),应该使用数据集描述符的标准扩展
  4. 重要的是,为了使这个最有用,需要有一些方法来将变量描述符与它们最终采用的名称进行匹配.因此,要么所有重命名变量都必须在源文件中完成,而不是在清理步骤中完成(不太理想),文档引擎必须完成一些代码解析以跟踪变量名称更改(呃!),或者某些应该使用更简单的混合,例如允许在标记文件中指定变量重命名.
  5. 理想情况下,报告也会被模板化(例如"我们从[日期]上的[dset]数据集中提取[var]变量."),并且可能与Sweave相关联.
  6. 该工具应该足够灵活,不会过于繁琐.这意味着最小文档只是一个数据集名称.

yaml metadata r roxygen

21
推荐指数
1
解决办法
1039
查看次数

Roxygen很好的参考?

除了这里出色的SO答案,还有Roxygen 手册插图,是否有任何特别全面的使用Roxygen指南?

documentation r reference roxygen

20
推荐指数
2
解决办法
2633
查看次数

在Roxygen2样式文档中转义"@"

假设我有一个评论栏,我想写一个电子邮件地址.我将如何转义"@"符号,以便roxygen将其视为文本而不是指令?

r roxygen

20
推荐指数
1
解决办法
915
查看次数

Rxygen的R文档?

我发现R文档很重要,但创建/维护也很费时.有没有人使用过Roxygen,如果有的话,它是否有助于维护R包?我过去使用过Doxygen,但那些项目没有R包所需的man结构.

你可以在这里找到小插图.

documentation r roxygen

18
推荐指数
1
解决办法
1363
查看次数

如何正确记录S4"["和"[< - "方法使用roxygen?

下面我发布了一个迷你示例,其中我想“[“为S4类的方法编写文档.有人知道如何正确记录"["使用roxygen和S4 的通用方法吗?
在建造后检查包装时我收到警告(见下文).

#' An S4 class that stores a string.
#' @slot a contains a string
#' @export
setClass("testClass", 
         representation(a="character"))

#' extract method for testClass
#'
#' @docType methods
#' @rdname extract-methods
setMethod("[", signature(x = "testClass", i = "ANY", j="ANY"),
         function (x, i, j, ..., drop){
             print("void function")
         }
)
Run Code Online (Sandbox Code Playgroud)

包检查摘录:

* checking for missing documentation entries ... WARNING
Undocumented S4 methods:
  generic '[' and siglist 'testClass'
All user-level objects in a package (including S4 …
Run Code Online (Sandbox Code Playgroud)

r roxygen s4

18
推荐指数
3
解决办法
2830
查看次数

包括使用roxygen文档的图像

是否可以在roxygen生成的文档中包含图像?我有许多函数,基本上是ggplot()的包装器,我想通过显示输出的示例来记录.

r sweave roxygen

18
推荐指数
1
解决办法
883
查看次数