Roxygen2:记录重载 R 基函数时用作 S4 的 S3 类(cor)

2023-12-08

我有以下背景:

我确实超载cor基本函数,以便我在我的包 .R 文件中包含以下语句:

#'export
setGeneric("cor")

现在我想为我的对象创建一个特定的函数(名为stranger) -- 这里为了简单起见,我只认为我的对象是一个 data.table ,其中有一个名为.id.

#' Correlation for stranger objects
#' describeIn cor Correlation method for stranger objects.
setMethod("cor",signature(x="stranger"),function(x, method = c("pearson", "kendall", "spearman")){
  selectMethod("cor","ANY")(x[,-'.id',with=FALSE],y=NULL, use="everything",method=method)
})

如果我明白的话setGeneric,它依赖于 S4 类——因此signature范围。

但是,我不使用 S4 类,而是构建我的stranger用简单的旧方法对象:

buildClass <- function(x,...){
  #... prepare out object as data.table with .ìd column 
  class(out) <- c("stranger", class(out))
  return(out)
}

也就是说,我的对象没有 S4 类。 调度仍然有效:调用cor在我的对象上正确应用专用方法。

我的问题是如何使用 ROxygen2 正确记录这一点。目前,在加载我的函数时,我遇到以下消息:

Updating stranger documentation
Loading stranger
Creating a generic function for 'cor' from package 'stats' in package 'stranger'
in method for 'cor' with signature 'x="stranger"': no definition for class "stranger"

我已经仔细阅读了 roxygen2 上的 Hadley vignette 以及一些似乎与 stackoverflow 相关的问题,但它们只处理经典的 S3 机制或纯 S4,而我没有 S4 构造函数setClass and setGeneric依赖S4。


而不是设置 S4 通用方法cor(),您可以将其重新定义为 S3 泛型并为其定义方法。为了说明这一点,我创建了一个仅包含两个 R 文件“buildClass.R”和“cor.R”的 R 包,复制如下:

构建类.R:

#' Stranger Class Constructor
#'
#' Put some details about it
#'
#' @param x an object
#'
#' @export
buildClass <- function(x){
    class(x) <- c("stranger", class(x))
    return(x)
}

cor.R

#' Cor
#'
#' Put some details about it
#'
#' @param x an object
#' @param ... other arguments
#'
#' @rdname cor
#' @export
cor <- function(x, ...) {
    UseMethod('cor', x)
}

#' @rdname cor
#' @export
cor.stranger <- function(x, ...) {
    return(1)
}

#' @rdname cor
#' @export
cor.default <- function(x, ...) {
    return(stats::cor(x, ...))
}

然后,如果你加载你的包(在我的例子中命名为“anRpackage”),用户将被警告该包掩盖了stats::cor,但是方式cor.default()被定义为,stats::cor()为不属于该类的对象调用stranger:

library(anRpackage)

Attaching package: ‘anRpackage’

The following object is masked from ‘package:stats’:

    cor

set.seed(1234)
regular_mat <- matrix(rnorm(100), nrow = 25)
stranger_mat <- buildClass(regular_mat)
cor(regular_mat)

            [,1]       [,2]        [,3]       [,4]
[1,]  1.00000000  0.1531414 -0.01948986 -0.3737424
[2,]  0.15314141  1.0000000  0.17531423 -0.1752925
[3,] -0.01948986  0.1753142  1.00000000  0.4371213
[4,] -0.37374237 -0.1752925  0.43712127  1.0000000

cor(stranger_mat)
[1] 1

检查包裹时devtools::check()使用默认值cran = TRUE(检查“使用与 CRAN 使用相同的设置”),没有出现错误、警告或注释:

> check(current.code)
Updating anRpackage documentation
Loading anRpackage
Setting env vars ----------------------------------------------------------------
CFLAGS  : -Wall -pedantic
CXXFLAGS: -Wall -pedantic
Building anRpackage -------------------------------------------------------------
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet  \
  CMD build '/home/duckmayr/anRpackage' --no-resave-data --no-manual 

* checking for file ‘/home/duckmayr/anRpackage/DESCRIPTION’ ... OK
* preparing ‘anRpackage’:
* checking DESCRIPTION meta-information ... OK
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* building ‘anRpackage_1.0.tar.gz’

Setting env vars ----------------------------------------------------------------
_R_CHECK_CRAN_INCOMING_USE_ASPELL_: TRUE
_R_CHECK_CRAN_INCOMING_           : FALSE
_R_CHECK_FORCE_SUGGESTS_          : FALSE
Checking anRpackage -------------------------------------------------------------
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet  \
  CMD check '/tmp/RtmpTcdHJ5/anRpackage_1.0.tar.gz' --as-cran --timings  \
  --no-manual 

* using log directory ‘/tmp/RtmpTcdHJ5/anRpackage.Rcheck’
* using R version 3.4.3 (2017-11-30)
* using platform: x86_64-pc-linux-gnu (64-bit)
* using session charset: UTF-8
* using options ‘--no-manual --as-cran’
* checking for file ‘anRpackage/DESCRIPTION’ ... OK
* checking extension type ... Package
* this is package ‘anRpackage’ version ‘1.0’
* checking package namespace information ... OK
* checking package dependencies ... OK
* checking if this is a source package ... OK
* checking if there is a namespace ... OK
* checking for executable files ... OK
* checking for hidden files and directories ... OK
* checking for portable file names ... OK
* checking for sufficient/correct file permissions ... OK
* checking whether package ‘anRpackage’ can be installed ... OK
* checking installed package size ... OK
* checking package directory ... OK
* checking DESCRIPTION meta-information ... OK
* checking top-level files ... OK
* checking for left-over files ... OK
* checking index information ... OK
* checking package subdirectories ... OK
* checking R files for non-ASCII characters ... OK
* checking R files for syntax errors ... OK
* checking whether the package can be loaded ... OK
* checking whether the package can be loaded with stated dependencies ... OK
* checking whether the package can be unloaded cleanly ... OK
* checking whether the namespace can be loaded with stated dependencies ... OK
* checking whether the namespace can be unloaded cleanly ... OK
* checking loading without being on the library search path ... OK
* checking dependencies in R code ... OK
* checking S3 generic/method consistency ... OK
* checking replacement functions ... OK
* checking foreign function calls ... OK
* checking R code for possible problems ... OK
* checking Rd files ... OK
* checking Rd metadata ... OK
* checking Rd line widths ... OK
* checking Rd cross-references ... OK
* checking for missing documentation entries ... OK
* checking for code/documentation mismatches ... OK
* checking Rd \usage sections ... OK
* checking Rd contents ... OK
* checking for unstated dependencies in examples ... OK
* checking examples ... NONE
* DONE

Status: OK

R CMD check results
0 errors | 0 warnings | 0 notes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Roxygen2:记录重载 R 基函数时用作 S4 的 S3 类(cor) 的相关文章

  • R 中带有文件名的 For 循环

    我有一个文件列表 例如 nE pT sbj01 e2 2 csv nE pT sbj02 e2 2 csv nE pT sbj04 e2 2 csv nE pT sbj05 e2 2 csv nE pT sbj09 e2 2 csv nE
  • par(mfrow=c(1,2)) 不显示并排密度图[重复]

    这个问题在这里已经有答案了 par mfrow c 1 2 plot 1 12 log y plot 1 2 xaxs i 然而 当我尝试做并排密度图时 图会单独输出 load the stud recs dataset library U
  • 使用 R Shiny 从 XLConnect 下载 Excel 文件

    有没有人尝试过使用 R Shiny 中的下载处理程序通过 XLConnect 下载新创建的 Excel 文件 在 ui R 中有一行不起眼的行 downloadButton downloadData Download 在 server R
  • 替换列表列表中的元素

    The applyR 中的函数是简化 for 循环以获得输出的好方法 是否有一个等效的函数可以帮助人们在替换向量的值时避免 for 循环 通过示例可以更好地理解这一点 Take this list for example x list li
  • 如何在R中计算文本中的句子数?

    我使用 R 将文本读入readChar 功能 我的目的是测试文本句子中字母 a 出现次数与字母 b 出现次数一样多的假设 我最近发现了 stringr 包 它帮助我对文本做很多有用的事情 例如计算字符数以及整个文本中每个字母出现的总数 现在
  • 基于服务器中的条件逻辑呈现闪亮的用户输入

    我正在尝试设置一个闪亮的导航栏面板页面 其中用户控制我根据一组单选按钮中所做的初始选择来显示更改 我直接在 ui 中渲染单选按钮 然后在 Server r 中的 观察到的 逻辑控制结构内构建条件控件 弹出错误是因为我的初始 if 语句计算结
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • 如何对同一列上的数据帧列表中的所有数据帧进行排序?

    我有一个数据框列表dataframes list 举个例子 我把dput dataframes list 在底部 我想对列列表中的所有数据框进行排序enrichment 我可以对一个数据框进行排序 first dataframe lt da
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • R中的一元加/减是什么?

    来自 R 的详细信息部分Syntax http stat ethz ch R manual R patched library base html Syntax html帮助页面 定义了以下一元和二元运算符 他们被列出 在优先级组中 从最高
  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • twitterR 和 ROAuth R 软件包安装

    我在安装 CRAN 上的 twitteR 和 RAOuth 软件包时遇到一些问题 我尝试了几种不同的方法 在 Windows 下使用源代码 在 Ubuntu 下使用 RStudio 我尝试了以下命令 sudo apt get install
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 为什么 dplyr filter() 不能在函数内工作(即使用变量作为列名)?

    使用 dplyr 函数对数据进行过滤 分组和变异的函数 基本管道序列在函数之外工作得很好 这就是我使用真实列名称的地方 将其放入一个函数中 其中列名称是一个变量 并且某些函数可以工作 但有些函数则不能 尤其是 dplyr filter 例如
  • API 请求和curl::curl_fetch_memory(url, handle = handle) 中的错误:SSL 证书问题:证书已过期

    几天前 我运行了代码几个月 没有任何问题 GET url myurl query 今天我遇到一个错误 Error in curl curl fetch memory url handle handle SSL certificate pro
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 使用 Shiny 发布平行坐标图表时出现“错误:路径[1]="”:没有这样的文件或目录”

    我有一个似乎很常见但我还没有找到解决方案的问题 当尝试使用 rCharts Parcoords 发布 Web 应用程序时 出现以下错误 错误 路径 1 没有这样的文件或目录 奇怪的是 该应用程序在我的笔记本电脑上运行得很好 下面是我正在使用
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不

随机推荐

  • 具有相同 GroupId 的多个 Kafka 监听器都接收消息

    我在 Spring Boot 应用程序中配置了一个 kafka 监听器 如下所示 KafkaListener topicPartitions TopicPartition topic data all partitions 0 1 2 gr
  • 如何从多个线程安全地写入套接字?

    我正在使用 asio 非升压 创建一个 TCP 服务器 虽然我的代码可以工作 但它没有正确完成 因为我正在调用asio async write来自多个线程 我think我应该使用股线 但我读得越多 我就越迷失 include
  • 如何将包含科学记数法的字符串转换为正确的 Javascript 数字格式

    我有一个字符串e g 4 874915326E7 将其转换为 JavaScript 数字格式的最佳方法是什么 整数或浮点数 如果我尝试 parseInt E最后被忽略 Edit 这个答案似乎引起了一些混乱 最初的问题是问如何将字符串形式的科
  • 判断Oracle null == null

    我希望在可为空的列上搜索数据库表 有时我要搜索的值本身就是 NULL 因为 Null 等于什么都没有 甚至是 NULL 所以说 where MYCOLUMN SEARCHVALUE 将失败 现在我必须求助于 where MYCOLUMN S
  • 如何创建充当链接的 TextView

    我有一个Textview地点 例如 加利福尼亚州山景城 我想要实现的是创建这个文本以充当链接 颜色 下划线 可聚焦性等 此链接不需要指向任何地方 周围视图已附加 onClick 侦听器 该侦听器会触发谷歌地图意图 像这样的东西应该有效 Te
  • 如何使用部署在 Kubernetes 上的 Flink 运行 Beam Python 管道?

    有谁知道当 Flink 在 Kubernetes 中作为 Pod 运行时如何使用 Flink 运行 Beam Python 管道 我已经成功地使用 Portable runner 和指向在 Docker 容器中运行的本地 Flink 服务器
  • 在android中为ListView中的每一行制作动态布局

    我有一个 xml 文件 其中包含 ListView 每一行的基本布局 这是一个真实的布局 里面有 TextView 我想更改 ListView 每一行的此布局的属性 例如每行的不同布局宽度和高度 我想动态设置宽度和高度的值 有什么办法可以做
  • Cloud Run 在 121 秒后崩溃

    我正在使用 PubSub 主题和订阅触发器触发长时间运行的抓取 Cloud Run 函数 每次我运行它时 它都会在 121 8 秒后崩溃 但我不明白为什么 POST 503 556B 121 8s APIs Google https dev
  • Android 中的 NETWORK_ERR:XmlHttpRequest 异常 101

    我正在为 android 手机开发一个移动应用程序 每当我运行它时 我都会收到以下错误 network err xmlhttprequest 异常 101 有人可以澄清一下吗 我使用的是安卓4 2版本 下面的代码是mainActivity
  • 使用 PIL 和 SKIMAGE 打开 PGM 文件时出错

    我有以下图像文件 Image 我使用 PIL 和 Skimage 打开它 但出现以下错误 首先使用 PIL 尝试使用和不使用 trucate 选项 代码 from PIL import Image ImageFile ImageFile L
  • 将 8 位整数转换为 dd/mm/yyyy [重复]

    这个问题在这里已经有答案了 所以我在我的 PHP 脚本中有这个函数 它应该将日期作为 8 位整数 例如01042012并将其转换为01 04 2012用于显示 目前我正在尝试使用 phpdate 函数如下 int 01042012 date
  • 以编程方式动态生成 Azure Function 的访问代码

    我有几个 Azure 函数 用 c 编写 我已将其 URL 提供给不同的团队来调用 调用 我注意到后缀的访问代码始终相同 因此存在安全风险 有没有一种方法可以让我们以编程方式动态生成 Azure 函数的访问代码并将其附加到函数的 URL 中
  • 自定义圆形进度条,图像位于中心[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 对于我的 Android 应用程序 我想将图像放入circular progress bar 预期设计 http hpics li cd6acba 关于如何做到这一点有什么想法吗
  • 调用存储在 std 映射中的成员函数指针

    我将映射存储在一个类中 该类以字符串作为键 以指向成员函数的指针作为值 我在调用正确的函数时遇到问题 抛出函数指针 这是代码 include
  • 无法安装弹性表

    我安装时遇到问题Flextable 这似乎是因为gdtools包裹 看起来像gdtools依赖 dylib 文件 有任何想法吗 gt install packages flextable There is a binary version
  • Python:如何引用实例名称? [复制]

    这个问题在这里已经有答案了 我使用以下代码收集实例 class Hand instances def init self Hand instances append self self value 5 def do something se
  • 在 EC2 实例上运行 jupyter 笔记本

    我在我的 AWS 账户上设置了一个 cloud 9 实例 我使用诗歌作为我的包管理器并安装了 jupyter 笔记本 当我运行命令时poetry run jupyter notebook它像平常一样运行 但是当我按下链接时 他们说无法访问该
  • 为什么不能在带有背景的锚元素上设置行高? [复制]

    这个问题在这里已经有答案了 我刚刚意识到带有背景的锚标记只会继承它们的行高 并且您只能通过将锚设置为显示来直接设置它 inline block 为什么是这样 http jsfiddle net moefinley 3H3y5 ul li a
  • Atmel SAM3X 双组切换不起作用

    我目前正在使用 Atmel SAM3X8 ARM 微控制器 该微控制器具有双组 2 x 256KB 闪存 我正在尝试实现固件更新功能 将新固件放入当前未使用的闪存库中 完成后使用闪存重新映射交换库以运行新固件 数据表指出 为此我需要设置 G
  • Roxygen2:记录重载 R 基函数时用作 S4 的 S3 类(cor)

    我有以下背景 我确实超载cor基本函数 以便我在我的包 R 文件中包含以下语句 export setGeneric cor 现在我想为我的对象创建一个特定的函数 名为stranger 这里为了简单起见 我只认为我的对象是一个 data ta