在 R6 类上实现 S3 调度的正确方法

2024-02-08

我有一个R6类,我想添加一个S3的方法。我发现的文档简要提到为了使用S3派送于R6你必须有class = TRUE,但我找不到应该如何完成的示例。

我确实凭经验看到,只需以以下形式编写 S3 方法s3generic.r6class有效,但我想知道这是否确实是编写S3方法用于R6.

例如,假设我有一个R6增强类list

library(R6)

R6list <- R6Class(
  "R6list",
  public = list(
    orig = NULL,
    initialize = function(x) {
      self$orig <- x
    }
  )
)

问题1

自然,我想提供一种获取底层列表的方法,所以我想添加一个as.list方法。添加 S3 通用和as.list类内的公共函数?我直觉的答案是两者都添加。

R6list <- R6Class(
  "R6list",
  public = list(
    orig = NULL,
    initialize = function(x) {
      self$orig <- x
    },
    as.list = function() {
      self$orig
    }
  )
)

as.list.R6list <- function(x, ...) {
  x$as.list()
}

所以现在如果我有一个对象mylist <- R6list$new(as.list(letters[1:5]))我可以打电话as.list(mylist) or mylist$as.list()。其中一个比另一个更受青睐吗?

问题2
写一篇有什么特别的吗S3方法用于R6类,或者我上面写的内容是否足够且正确?我不确定是否S3方法必须写在类定义之外,或者如果R6以某种方式提供了一种写作方式S3其中的方法,以便本地化与该类相关的所有代码。


我问了Winston Chang的作者R6, 对这个在 Github 上 http://github.com/wch/R6/issues/42。据他介绍,上面问题1中提供的代码是为R6类编写S3方法的正确方法。

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

在 R6 类上实现 S3 调度的正确方法 的相关文章

  • R、GeoJSON 和 Leaflet

    我最近从 R Bloggers com 的帖子中了解了 leafletjs com 我想要实现的一个此类教程是使用传单创建交互式分区统计图 http leafletjs com examples choropleth html http l
  • glmnet R 包中的 cv.glmnet 出现“drop(y %*% rep(1, nc)) 错误”错误

    我有一个返回 cv glmnet 模型的 auc 值的函数 尽管不是大多数时间 但在执行 cv glmnet 函数时 它经常返回以下错误 下降误差 y 代表 1 NC 在为函数 drop 选择方法时评估参数 x 时出错 y 中的错误 rep
  • lme4:如何指定 2 个与随机截距的相关性,而不添加随机斜率之间的相关性

    重新发布自stats stackexchange com https stats stackexchange com q 195385 33560 我试图在 R 的 lme4 包中指定一个模型 其中随机截距和随机斜率之间有 2 个相关性 但
  • 评估 R 中字符串指向的函数

    假设我有以下内容 x lt 1 10 squared lt function x x 2 y lt squared 我希望能够使用 y 定义的字符串来评估该函数 像 eval y 这样的东西 我知道这是错误的 但会返回 1 1 4 9 16
  • 将线条剪裁到绘图区域并在绘图区域外显示文本

    我想限制绘图的可见 y 范围 为了保留超出此范围的值 我需要设置oob 出界 to rescale none这效果很好 不过 我还想在图外的页边空白处添加一些文本 为了做到这一点 我需要关闭剪辑 这会导致超出范围的值被绘制在绘图区域之外的边
  • 在 R/ggplot2 中将字符串转换为函数参数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在开发一个闪亮的应用程序 用户可以选择可以使用 ggplot2 绘制哪些变量 但是我完全不确定将字符串 即要绘制的变量的名称 转换为合适的函数参数的最佳方法 考虑以下非常人为的 有效的示例 df lt dat
  • 为 PDF 输出添加 natbib 选项

    有没有办法指定natibib输出 PDF 时的选项bookdown 我希望 tex 输出具有命令 usepackage sort compress natbib 但似乎没有任何方法可以在 YAML 中指定它 我无法将命令添加到我的序言中 因
  • 有没有办法将字母扩展到超过 26 个字符,例如 AA、AB、AC...?

    我大部分时间都使用字母来表示我的因素 但今天我尝试超过 26 个字符 LETTERS 1 32 期待有自动递归因式分解 AA AB AC 但很失望 这只是字母的限制还是有办法使用其他函数来获取我正在寻找的内容 702够吗 LETTERS70
  • 为闪亮的应用程序创建桌面图标

    当我在基本 R 提示中提供以下代码时 我会在浏览器中打开一个闪亮的应用程序 shiny runApp C Myapp 我使用 Windows 7 我试图创建一个桌面图标 以避免我的客户每次想要使用该应用程序时都键入上述代码 我创建了一个桌面
  • 使用 dplyr 和 ggplot 绘制包括负值的多面水平发散堆积条形图

    我希望这个例子能够让人清楚 我想要堆叠条形 其中中间条形跨越 0 因为它代表中性值 这与李克特量表一起使用 为了重现性 我使用钻石数据集 以下示例与我的用例足够接近 并演示了我很难以正确的顺序获取 好 或 正 数据 因此中性最接近 0 这是
  • 哪种 LaTeX 包与 knit 一起使用以获得更多的表格控制?禁忌?

    我正在用 knitr 写一张更长的桌子xtable和tabular environment longtable 在 longtable 包中时print将它们纳入我的 Rnw file 问题是我对longtable环境控制不够 我有一些文本
  • R 中的 For 循环分配给数据框

    运行 for 循环后 我在分配给数据帧时遇到问题 当我使用 print 时 它给出了我的价值 有什么解释吗 salesdate lt rep seq from as Date 2013 12 19 to as Date 2013 12 23
  • R:使用 as.formula 修复模型中的模型调用

    我有一个gls模型 其中我将公式 来自另一个对象 分配给模型 equation lt as formula aic obj row model gt equation temp avg I year 1950 mod1 lt gls equ
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • 根据感兴趣的特定单词绘制高度相关的单词[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试绘制一个单词的最高相关性 例如 我想绘制 鲸鱼 一词的最高十个相关性的图表 有人可以帮我执行类似的命令吗 如果有帮助的话我已经安装
  • 插值时间序列

    我有两组具有不同时间戳的数据 一组数据包含校准数据 另一组包含样本数据 校准的频率比样品少得多 我想做的是将校准数据 低频 插值到采样时间序列 高频 上 sam lt textConnection time value 01 00 52 2
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 如何对plot_ly()图表进行分面?

    Using ggplot2 and plotly制作交互式散点图facet wrap library ggplot2 library plotly g lt iris gt ggplot aes x Sepal Length y Sepal
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • 用于检查和批量线性模型的数据表选项

    我想知道是否有data table用于从数据集中批量处理线性模型并首先进行检查的选项 我需要对每个唯一标识符运行一堆线性模型 但首先我需要进行检查 对于每个唯一的 id 和年份 我需要检查是否有至少 24 个月的先前每月数据 但不超过 60

随机推荐

  • 导入错误:无法导入名称“阶乘”

    我想使用 logit 模型并尝试导入 statsmodels 库 我的版本 Python 3 6 8 我得到的最好建议是降级 scipy 但不清楚如何降级以及应该降级到什么版本 请帮忙如何解决 https github com statsm
  • 在iOS 5中,如何使用AudioSession来确保插入耳机时通过扬声器播放音频?

    void viewDidLoad super viewDidLoad NSString filePath NSBundle mainBundle pathForResource 1 ofType mp3 Convert the file p
  • Genymotion不会停止优化应用程序

    我尝试将 Genymotion 与 Android Studio 结合使用 以便可以测试应用程序 但每当我尝试启动模拟器时 它都会显示 Android 正在启动 正在优化应用程序 of 74 并且它会优化一段时间 最终它停止优化 但随后它只
  • 在 eclipse 中为项目生成 Ant 构建文件

    我有一个使用 eclipse 用 Ja va 编写的项目 我想为其生成一个 Ant 构建文件 如何做呢 我经常需要使其与源代码保持同步 以便在修改项目结构时可以将其与代码一起提升到公共存储库 我很抱歉问这样一个愚蠢的问题 我浏览了各个论坛
  • JS:如何处理从 API url 返回的 400 Bad Request 错误

    仍然很缺乏经验 我正在尝试错误处理 400 Bad Request 我有一个带有搜索栏的网站 然后 输入到搜索栏中的值将被放入返回对象的 api url 中 每当输入拼写错误的搜索值时 站点的控制台都会针对 api url 返回 400 错
  • 在 C 中使用变量文件名读取多个具有相似名称的文件?

    我有多个名为sensor0 txt sensor1 txt sensor2 txt 等的文件 我需要打开这些文件 用它们进行计算 并将它们打印在屏幕上 所以我想到了类似的事情 for i 0 i lt N Number of files i
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • 非常大的非线性最小二乘优化的收敛

    我正在尝试解决以下问题 我有很多 80000 正在生长的器官表面斑块 我随着时间的推移 18 个时间点 测量它的每个面积 并希望拟合一条增长曲线 双逻辑模型 例如 只是两个逻辑函数 bcs 的总和 在观察期 我有框约束来确保指数项不会爆炸
  • 如何在 MongoDB 中执行 SQL Join 等效操作?

    如何在 MongoDB 中执行 SQL Join 等效操作 例如 假设您有两个集合 用户和评论 我想提取 pid 444 的所有评论以及每个集合的用户信息 comments uid 12345 pid 444 comment blah ui
  • 使用 Google Play 提供的上传密钥签署 APK

    我正在尝试了解如何在使用 Google Play 应用签名时将应用上传到 Google Play 这是我所做的 创建了一个应用程序 使用 keytool exe 为该应用程序生成密钥 已将应用上传至 Google Play 已注册 Goog
  • 在图的顶层绘制圆圈

    我正在制作一个图形 试图在组合颜色图和等高线图的顶部绘制一个圆圈 圆圈不断地绘制在轮廓下方而不是轮廓上方 参见下图 我尝试重新排序如何调用 imshow contour 和 Circle 看看是否能让圆圈显示在顶部 但我没有任何运气 有没有
  • .NET 3.5 是媒体中心插件的合理先决条件吗?

    我们有一个开源媒体中心插件 目前它的下载大小只有区区一兆字节 如果我将插件更改为需要 NET 3 5 用户可能需要下载197 megs http www west wind com weblog posts 292203 aspx只是为了能
  • Django:子查询的注释

    我正在尝试注释一个查询集Station与id最近邻的Station使用 Django 2 0 3 和 PostGIS GeoDjango 功能 简化版Station model class Station models Model name
  • 如何将整个 python 解释器打包到 Android APK 中?

    我了解 SL4A 以及如何在 Android 中运行 Python 脚本 我需要知道如何将整个 Python 解释器打包到我的 APK 中 这样我的最终用户就不必在运行我的应用程序之前下载并安装 SL4A Thanks 尝试看看kivy o
  • 如何在Windows Phone 7.1中捕获解锁屏幕事件?

    如何捕获屏幕解锁事件 然后在 Window Phone 7 1 中屏幕解锁时从我的应用程序触发一些事件 您可以处理PhoneApplicationFrame Unobscured http msdn microsoft com en US
  • Firefox 中不遵循 SVG 的百分比变换来源,仅有时在 WebKit 中遵循

    我有这个蛋卷冰淇淋 SVG 图形 我想用一个transform origin of 50 100 中心底部 Firefox 声称遵守 即检查员记录了正确的transform origin 但实际上是围绕左上角进行变换 奇怪的是 WebKit
  • 使按钮一次仅打开一个窗口(通过关闭顶级窗口来启用按钮)

    I want NewWinButton一次只创建一个新窗口 这意味着如果 if NewWin winfo exists 1 NewWinButton config state disabled else NewWinButton confi
  • iOS7 UIScrollView 在状态栏下方显示偏移内容

    我正在开发我的应用程序以与 iOS7 配合使用 我有一个 UINavigationController 我正在推送一个 UIViewController 里面有一个 ScrollView 在scrollView 里面我有一个tableVie
  • Pygame,角色移动速度

    我是犹他大学的一名学生 正在使用 Pygame 进行一个项目 但遇到了一些小问题 我已经编写了整个游戏的代码 并且运行完美 但我希望我的角色在走过某些地形时减慢移动速度 例如 如果他 她走过沙砖 我希望他 她的速度减半 我无法自己解决这个问
  • 在 R6 类上实现 S3 调度的正确方法

    我有一个R6类 我想添加一个S3的方法 我发现的文档简要提到为了使用S3派送于R6你必须有class TRUE 但我找不到应该如何完成的示例 我确实凭经验看到 只需以以下形式编写 S3 方法s3generic r6class有效 但我想知道