r - 如何在我的 R 包中将函数导出为 S3 方法?
问题描述
我正在编写一个包供我使用。例如,我创建了 marco 类的对象。
然后我写了一些方法,比如print.marco
,plot.marco
等,我想在print(obj)
where中应用这些方法class(obj) = "marco"
。在 NAMESPACE 文件(使用 创建roxygen2::document()
)中,这些函数仅按原样导出,而不是原样导出,并且不S3method
被 识别为原样sloop::is_s3_method
。
我搜索了互联网,但找不到答案或明确的例子。在我的 R 脚本中的 Hadley Wickham 的 R 包中,我简单地记录了添加#' @export print.marco
等的函数。
一个最小的例子
#' Prints a marco object
#' @param marco_obj A marco object.
#' @export print.marco
print.marco(marco_obj){
print(marco_obj$this_is_printable)
}
从我读过的上述书中(粗体我的)
S3 泛型只是函数,因此适用于函数的规则相同。S3 方法始终伴随着泛型,因此只要您可以访问泛型(隐式或显式),这些方法也将可用。换句话说,您不需要为 S3 方法做任何特别的事情。只要您导入了 generic,所有方法也将可用。
我想我只需要了解如何导入泛型?
有人可以帮忙吗?
编辑问题是我使用了@export print.marco
. 这会覆盖 S3 方法的创建。推杆@export
工作正常。感谢 Roland 在下面的评论。
解决方案
所以,答案是我使用了错误的@export
指令。
我使用了@export print.marco。这会覆盖 S3 方法的创建。简单地说@export 工作正常。感谢 Roland 的上述评论。
推荐阅读
- javascript - 如何按顺序处理数组异步函数
- sql - 不能在 sqlite 中使用 BETWEEN 或两个以上的比较运算符
- asp.net-core - 将 ASP.NET Core 2.2 移植到 3.0 后,请求 DateTime 未正确反序列化并抛出错误
- c - 无法理解 getop 函数中的最后两个 while 循环
- javascript - 修改 javascript 以维护 Flask 中的 HTML 下拉菜单选择
- mysql - 检查日期是否介于 MySQL 数据库中的两个日期之间?
- c# - 快速比较相同字符串数组的元素
- java - 我有一个动画拖放问题
- angular7 - 无法读取未定义的属性“切片”。当我在 ionic 4 中使用 lcrypt 时
- java - 如何在 Java 的 SecureRandom nextLong 中指定最大值