Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-package开发:使用非语法名称记录和导出函数_R_Roxygen2 - Fatal编程技术网

R-package开发:使用非语法名称记录和导出函数

R-package开发:使用非语法名称记录和导出函数,r,roxygen2,R,Roxygen2,我正在编写一个包(称为pac),其中我有一个非语法名称的函数(称为+f)。我无法正确记录和导出此函数 下面是一个可复制的示例: library(devtools) setwd("~/yourpath") create("pac") 将以下函数定义及其文档保存在pac/R/+f.R #' Add two objects #' #' @name `+f` #' #' @param x an object #' @param y an object #'

我正在编写一个包(称为
pac
),其中我有一个非语法名称的函数(称为
+f
)。我无法正确记录和导出此函数

下面是一个可复制的示例:

library(devtools)
setwd("~/yourpath")
create("pac")
将以下函数定义及其文档保存在
pac/R/+f.R

#' Add two objects
#' 
#' @name `+f`
#' 
#' @param x an object
#' @param y an object
#' @return A sum
#' @export
`+f`<- function(x, y) {x + y}
哪一个产生输出

> document()
Updating pac documentation
Loading pac
Writing NAMESPACE
Writing tick-plus-f-tick.Rd
> load_all()
Loading pac
Warning message:
In setup_ns_exports(path, export_all, export_imports) :
  Objects listed as exports, but not present in namespace: +f
> `+f`(2, 2)
Error in `+f`(2, 2) : could not find function "+f"

如您所见,函数
`+f`
未正确导出,即使
名称空间
-文件有以下行:

 export(`+f`)
另一方面,由于存在文档文件
pac/man/tick-plus-f-tick.Rd
,因此我可以通过调用
?“`+f`”
来显示它


如何在包中定义并记录具有非语法名称的函数?上述示例中发生了什么?为什么加载
pac
时函数不可用,即使
名称空间
-文件包含一个导出语句?

我不太明白您为什么要将函数命名为该函数。您只是想为
+
添加一个新方法吗?编写关于名称空间文件的R扩展名1.5.1:“注意,变量名可能会被引用,保留字和非标准名称,例如[可能像
@export这样简单”+f"
?@Roland感谢您的建议。这就是我尝试使用
@name
标记的原因。我在
@name
之后写的任何内容都会显示在
名称空间
-文件中的
导出
语句中。我现在也尝试了使用
@export
标记的变体,但迄今为止运气不佳。您是否尝试过e> @export“+f”
?AFAIU,
@name
是一个Rd标记,而不是名称空间标记。因为您的问题是导出,所以Rd标记没有帮助。
 export(`+f`)