如何将 S4 槽选择器“@”重载为通用函数

2024-01-27

我正在尝试转动@R 中的运算符转换为 S3 系统的通用函数。

基于中的章节编写 R 扩展:添加新的泛型 https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Adding-new-generics我尝试实现泛型@像这样:

`@` <- function(object, name) UseMethod("@")
`@.default` <- function(object, name) base::`@`(object, name)

然而这似乎不起作用,因为它打破了@对于 S4 方法。我在用Matrix以S4实例包为例:

Matrix::Matrix(1:4, nrow=2, ncol=2)@Dim

错误于@.default(矩阵::矩阵(1:4, nrow = 2, ncol = 2), Dim) : 类“dgeMatrix”的该对象没有名称“name”的插槽

如何实现泛型@所以它在 S4 类的情况下正确调度?


EDIT

还对为什么这可能不是一个好主意的意见感兴趣?


在 R 4.3.0 及更高版本中,@运算符将在 S3 内部通用,如最新文档中所述NEWS https://stat.ethz.ch/R-manual/R-devel/doc/html/NEWS.html:

The @运算符现在是 S3 泛型。基于 Tomasz Kalinowski 的贡献PR#18482 https://bugs.r-project.org/show_bug.cgi?id=18482.

如果您不想等待 4 月 21 日 R 4.3.0 发布,可以在 R-devel 上进行测试:

.S3method("@", "zzz", function(object, name) "OK")
structure(0, class = "zzz")@whatever
## [1] "OK"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 S4 槽选择器“@”重载为通用函数 的相关文章

随机推荐

  • Swift - 从闭包中退出外部函数

    在 Kotlin 中 您可以从闭包的外部函数返回 fun main args Array
  • 如何使用基于 .Net 类属性的值自动更新 WPF TreeViewItems?

    早上好 我有一个类 其中包含从 InotifyPropertyChange 派生的数据 数据来自后台线程 该线程在特定位置搜索具有特定扩展名的文件 类的公共属性通过在单独的线程中更新数据来对事件 OnPropertyChange 做出反应
  • 如何使用 d3 画布渲染器添加鼠标事件以强制定向图?

    所有其他示例都有带有 svg append 的鼠标事件 我不知道在哪里 输入 以获取画布渲染器中的弧并添加 on click function v4 风格 我想点击获取值d 在此示例中 我应该在哪里添加处理程序 我理解这个例子下面的旧方法
  • stunnel https 被重定向到 http

    我有一个在端口 8081 上侦听的 Web 服务 它是在单声道上运行的 ServiceStack REST Web 服务 如果有帮助的话 我正在尝试使用 stunnel 来保护它 但问题是一旦我连接到https ip https ip 它被
  • 语言切换器,使用 symfony 重定向到当前页面

    在 symfony 中进行语言切换并重定向到所选语言的同一页面的最佳方法是什么 Jobeet 只是在主页上进行重定向 像这样的事情应该可以解决问题
  • 使用 Bash 正则表达式匹配 (=~),其中正则表达式包含引号(" 字符)

    我想使用 Bash 正则表达式匹配 使用 运算符 来匹配包含引号的字符串 举例来说 我有以下字符串 我想提取引号之间的文本 foo Hello World 我的第一次尝试是将正则表达式放在强引号中 以强制引号为常规字符 foo 这会失败 因
  • 找不到类“bolts.AppLinks”

    当我尝试在设备上启动 Android 应用程序时 崩溃并出现奇怪的错误 这个问题从前两天就出现了 这是错误 11 09 17 27 30 461 25146 25146 com ten ten E AndroidRuntime FATAL
  • 如何使用 boto 以编程方式检查 Amazon S3 权限?

    我们在 Amazon S3 的存储桶中有一棵茂密的树 其中包含大量文件 我刚刚发现 虽然有些文件有两个权限条目 如单击 AWS 管理控制台中的一个文件 然后单击属性 gt 权限 一行是 所有人 另一行是某个特定用户 其他文件只有一个该用户的
  • 将类函数转换为 lambda 函数

    我正在尝试拉出这样的东西 class helper some class variables public function somehelper somevar some action to somehelper somevar 我希望它
  • Android通知大图样式和大文本样式

    我已经使用大图片样式构建了推送通知 如图所示here http developer android com reference android app Notification BigPictureStyle html 是否可以混合大图片样
  • 何时在 MySQL 表中使用 NULL

    我很欣赏数据库表中 NULL 值的语义 它不同于 false 和空字符串 然而 我经常读到有关字段可为空时的性能问题的信息 并建议在 NULL 实际上在语义上正确的情况下使用空字符串 什么情况适合使用可为空字段和 NULL 值 有哪些权衡
  • Java Singleton 与 static - 是否有真正的性能优势?

    我正在合并一个 CVS 分支 较大的更改之一是用具有静态初始化块和所有静态方法的抽象类替换单例模式 这是值得保留的东西吗 因为它需要合并很多冲突 我会在什么样的情况下考虑这种重构是值得的 我们在 Weblogic 8 1 下运行这个应用程序
  • 查找包含给定文件的目录?

    我希望这是一个有趣的问题 我想找到一个包含所有给定文件的目录 到目前为止我所做的如下 在unix中查找多个文件 find type f name cache o name xml o name html 参考 http alvinalexa
  • Apache/PHP 大文件下载(>2Gb)失败

    我正在使用 PHP 脚本来控制下载文件的访问 这对于 2Gb 以下的任何文件都适用 但对于较大的文件则失败 Apache 和 PHP 都是 64 位 Apache will如果直接访问则允许下载文件 我不允许 PHP 的核心 忽略访问控制
  • 设置自动填充建议的样式

    非常简单 我正在研究输入的 CSS 但是当 Chrome 在 MacOS 上 使用建议 自动填充功能 填充输入时 它会更改字体 有没有办法覆盖它以保留我的自定义字体和其余 CSS 属性 最令人不安的是 场地的高度发生了变化 这真的很难看 也
  • 如果屏幕小于一定宽度则隐藏 div

    如果用户屏幕 document ready function if screen width gt 1024 if screen size is 1025px wide or larger yourClass css display non
  • 如何在“rails new app --skip-test-unit”之后重新启用 Rails 4 中的 Test::Unit

    I used rails new app skip test unit 因为最初 我认为我可以稍后添加测试 我开发了我的应用程序的很大一部分 现在 我想添加 Test Unit 但我找不到任何有关如何执行此操作的文档 谷歌搜索仅引导我找到
  • 如何在不使用 JS 发出新请求的情况下读取当前标头? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Javascript 中访问 HTTP 标头 https stackoverflow com questions 220231 accessing http headers in javascri
  • 设置 HTTPClient get() 请求的超时

    此方法提交一个简单的 HTTP 请求并调用成功或错误回调即可 void getSimpleReply String command callback errorCallback async try HttpClientRequest req
  • 如何将 S4 槽选择器“@”重载为通用函数

    我正在尝试转动 R 中的运算符转换为 S3 系统的通用函数 基于中的章节编写 R 扩展 添加新的泛型 https cran r project org doc manuals r release R exts html Adding new