什么是 setReplaceMethod() 以及它如何工作?

2023-12-28

我对使用感到困惑setReplaceMethod()。看着?setReplaceMethod没有提供解释,谷歌搜索也没什么帮助。

QUESTION: 请解释setReplaceMethod(),它的用法及其工作原理(最好有一个例子)。


这是我发现的。正如@Hong Ooi 在评论中指出的setReplaceMethod("fun")是相同的setMethod("fun<-"), so setReplaceMethod用于在 R 的 S4 对象系统中创建通用替换函数的方法。

什么是替换函数解释于r 中的替换函数是什么 https://stackoverflow.com/questions/11563154/what-are-replacement-functions-in-r。非常粗略地说,如果你有一个名为fun<-,因为它的名字以<-, 你可以写fun(x)<-aR 会读到x <- "fun<-"(x,a).

S4 对象系统描述于S4 - 高级 R http://adv-r.had.co.nz/S4.html.

举个例子,也许从为 S4 通用函数创建一个方法(不是替换函数)开始会更容易:

## Define an S4 class 'Polygon' and an object of this class
setClass("Polygon", representation(sides = "integer"))
p1 <- new("Polygon", sides = 33L)
## Define a generic S4 function 'sides'
sides <- function(object){ NA }
setGeneric("sides")
## sides returns NA
sides( p1 )
## Define a method for 'sides' for the class 'Polygon'
setMethod("sides", signature(object = "Polygon"), function(object) {
  object@sides
})
## Now sides returns the sides of p1
sides( p1 )

创建通用替换函数的方法类似:

## Define a generic replacement function 'sides<-'
"sides<-" <- function(object, value){ object }
setGeneric( "sides<-" )
## The generic 'sides<-' doesn't change the object
sides( p1 ) <- 12L
sides( p1 )
## Define a method for 'sides<-' for the class 'Polygon',
## setting the value of the 'sides' slot
setMethod( "sides<-", signature(object = "Polygon"), function(object, value) {
  object@sides <- value
  object
})
## Now 'sides<-' change the sides of p1
sides( p1 ) <- 12L
sides( p1 )

您还询问了$<-。我的猜测是这样的:x$name<-value被解释为"$"(x,name)<-value然后作为x <- "$<-"(x,name,value)。请注意,泛型函数$<-已经定义了(isGeneric("$<-")),所以我们只为我们的Polygon类定义一个方法:

setMethod( "$<-", signature(x = "Polygon"), function(x, name, value) {
  if( name=="sides" ){
    x@sides <- value
  }
  x
})
## Nothing changes if we try to set 'faces'
p1$faces <- 3L
p1
## but we can set the 'sides'
p1$sides <- 3L
p1

请注意参数x, name and value由通用决定。

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

什么是 setReplaceMethod() 以及它如何工作? 的相关文章

  • 将所有 0 值替换为 NA

    我有一个包含一些数字列的数据框 某些行具有 0 值 在统计分析中应将其视为空 在R中将所有0值替换为NULL的最快方法是什么 将所有零替换为 NA df df 0 lt NA 解释 1 它不是NULL你应该用什么来替换零 正如它所说 NUL
  • 有没有一种简单的方法可以在 R 的 igraph 中按度数对网络节点进行着色?

    使用igraphR 包 我想按度数对网络节点进行着色 颜色应代表渐变 例如从蓝色到红色 或从黄色到红色 从网络中观察到的最低程度到最高程度 我找到了一个可行的解决方案 https stackoverflow com questions 40
  • 删除第一次出现某个值后的行

    我有以下 df df lt data frame var1 c 1 2 2 3 4 5 5 6 7 8 9 var2 c a b c d e f g h i j k 我想在达到前 5 var1 后进行过滤 所以结果应该是 var1 var2
  • R 和系统调用

    我过去曾使用 R 对命令行进行非常基本的调用 例子可以找到here https stackoverflow com questions 3284301 command line in r code 这一次 我希望模仿这段从 Windows
  • 使用格式表过滤数据框

    样本数据 修改自formattablegithub 文档 df lt data frame id 1 10 name c Bob Ashley James David Jenny Hans Leo John Emily Lee age c
  • 使用 Rgraphviz 中的 pos 参数来固定节点位置

    基于这个问题当弧与另一弧重叠时自动弯曲 https stackoverflow com questions 45721802 automatically curving an arc when it is overlapping with
  • 安装 R 包。包含目录为空。开发标头

    我目前正在尝试运行一些最初在 2 11 0 下运行的 R 代码 我使用的 R 版本 2 14 1 无法运行该代码 我不熟悉 R 及其向后兼容性 据我所知 我的问题可能与版本无关 我会很高兴得知这是我做错的事情 其余的代码是无关紧要的 即使我
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 基于两列对数据框中的行进行求和[重复]

    这个问题在这里已经有答案了 我想添加一列的值 将它们按两列分组 我找到了如何在一列上执行此操作 但无法弄清楚如何在两列上执行此操作 例如 如果我有以下数据框 x c a a b b c c a a b b c c a a b b c c y
  • 对 data.table 进行子集化的最快方法是什么?

    在我看来 这是执行行 列子集的最快方法data table是使用 join 和nomatch option 它是否正确 DT data table rep 1 100 100000 rep 1 10 1000000 setkey DT V1
  • 使用 rvest 进行抓取 - 当标签不存在时,使用 NA 完成抓取

    我想解析这个 HTML 并从中获取这个元素 a p标签 与class normal encontrado b div with class price 有时 p某些产品中不存在标签 如果是这种情况 NA应添加到从该节点收集文本的向量中 这个
  • 计算网格中物种的出现次数

    我有大约500 000点R美国各地候鸟物种的出现数据 我试图在这些点上覆盖网格 然后计算每个网格中出现的次数 统计完计数后 我想将它们引用到网格单元 ID 在 R 中 我使用了over 函数只获取范围图中的点 这是一个形状文件 Read i
  • 连接路径的函数?

    是否有现有的函数来连接路径 我知道实施起来并不困难 但仍然 除了照顾尾随 or 我需要注意正确的操作系统路径格式检测 即我们是否编写C dir file or dir file 正如我所说 我相信我知道如何实施它 问题是 我应该这样做吗 现
  • 在 Shiny 应用程序中更改 bsModal 的背景

    我正在开发一个 Shiny 应用程序 我需要确保最终用户不会意外关闭 bsModal 因为它上面有一些操作按钮 我做了一些研究并了解到我需要覆盖背景和键盘参数 但即使我看到了一些建议 我也不知道这到底需要放在我的代码中的哪里 我不精通 Ja
  • R 监督潜在狄利克雷分配包

    我在用着这个LDA包 https cran r project org web packages lda 对于 R 具体来说 我正在尝试做监督潜在狄利克雷分配 slda https www cs princeton edu blei pap
  • 与heroku配合使用的统计引擎

    我有一个 Heroku Rails 应用程序 需要处理一些重要的数字 并且我需要使用像 R 这样的统计库 更糟糕的是 MatLab 我正在寻找以下任何问题的答案 是否有不需要二进制文件的功能齐全的统计包 GEM 是否可以将 R 二进制文件作
  • 省略 RColorBrewer 调色板上较亮的颜色以在 ggplot2 中使用

    我想在 RColorBrewer 的 Oranges 调色板中使用较深的颜色 以便在我的 ggplot 条形图 中使用 然而我却做不到 帮助 下面是示例代码 my palette brewer pal n 9 Oranges 4 9 Bar
  • “条件长度 > 1 并且仅使用第一个元素”错误

    我对 f 语句有疑问 因为它返回给我以下错误消息 条件长度 gt 1 并且仅使用第一个元素 我有一个名为 data summary 的数据框 我想创建两个新变量vol up and vol down取决于我的数据框的其他变量 这是我的脚本代
  • 使用 sprintf 打印换行符 - 有光泽

    我试图在打印时进行换行 这是我的代码 temp lt LETTERS 1 11 print sprintf Rank s s n 1 11 temp output 1 Rank 1 A n Rank 2 B n Rank 3 C n Ran
  • 如何在 R 中创建“堆叠瀑布”图表?

    I was able to find several packages to create a waterfall chart in R which look like this But I could not find a way to

随机推荐

  • 权限拒绝:不允许在android中发送广播

    我创建了一个简单的相机应用程序 它在除 Android 4 4 之外的所有 Android 版本中都能正常运行 当我从相机应用程序拍照时出现以下错误 java lang SecurityException Permission Denial
  • 如何在滚动时禁用 TouchableOpacity 的突出显示效果?

  • 如何自定义颜色条

    使用这段代码 我不知道如何自定义颜色栏 关于此的色彩图webiste http matplotlib org users colormaps html不能满足我 shade m contourf Lon Lat TBB np arange
  • Android 中的 ViewPager + RecyclerView 问题

    嗨 我有Tablayout with Viewpager我正在使用Fragment用于表格布局 现在在每个 Tablayout 片段中我都有Recyclerview并显示项目 请查看我的 json 响应 http pastebin com
  • Money_format() 函数的替代方案

    我正在尝试使用money format PHP 中的函数 但出现以下错误 Fatal error Call to undefined function money format 关于此错误的搜索表明该函数money format 仅当系统有
  • 如果我需要额外的 REST API,Meteor 是一个选择吗?

    我要编写一个 Web 应用程序 它应该可以从 Web 和本机移动设备应用程序进行 CRUD 访问 对于后者 我绝对致力于 REST API 通过 Meteor com 可以实现这一点吗 是否可以选择仅将 Meteor 用于 Web 并使用第
  • Python MySQLdb 异常

    刚刚开始掌握 python 和 MySQLdb 并且想知道 在哪里放置 try catch 块来连接 MySQL 是最好的选择 在 MySQLdb connect 点 当我查询时也应该有一个吗 我应该在这些块中捕获哪些异常 谢谢你的帮助 干
  • PHP:比 strtotime 更好的日期解析器

    我正在尝试解析特定格式的字符串 但我很惊讶地发现我找不到一个好的函数来做到这一点 我发现的唯一一个是斯特托时间它不适合它guesses日期格式 我真的不相信 猜测 部分 此外 我的字符串输入是法语格式 dd mm aaaa 这似乎不太容易理
  • 如何禁用 HTML 视频播放器播放速度/三个点

    我不想在视频中显示播放速度 是否有任何控件或controlList属性来禁用该选项 例如controls disablepictureinpicture controlslist nodownload 将参数 noplaybackrate
  • C 和 C++ 标准之间有什么关系?

    我正在写这个答案 https stackoverflow com questions 5539249 why transforms begin s end s begin tolower cant be complied successfu
  • div水平居中和垂直居中[重复]

    这个问题在这里已经有答案了 我想将 div 水平居中和垂直居中对齐body一个页面的 The css loginBody width 100 height 100 margin 0 padding 0 background 999 for
  • 点网组件查看器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 dll 其中包含点网程序集 通用中间语言 问题是它缺乏文档 我需要弄清楚 api 比如可用的类
  • 导出为中文PDF

    我有一个包含中文的网格 当我想将数据导出为 PDF 时出现问题 似乎出现了一个奇怪的字符 下图 或类似的东西 谁能帮我解决这个问题 这里我提供一个dojo中的DEMO https dojo telerik com EJUWoNuB 找到了解
  • 如何将子域指向 Heroku 应用程序,并将根域指向另一个 Heroku 应用程序?

    我在将子域路由到 Heroku 上托管的 Wordpress 博客以及将根域路由到另一个 Heroku 应用程序时遇到问题 如果我购买了一个名为cheese com在 NameCheap 上 我想路由一个子域 例如blog cheese c
  • 尝试通用/“类型自由”时的转换问题 | ASP MVC

    Question 有没有办法在 C 中 在辅助类或其他类中 只定义一次方法 而不知道要返回哪种类型 长解释我收到以下错误 无法转换类型的对象 系统 数据 对象 ObjectQuery1 WerkStageNu Vacancies to ty
  • 使用 Javascript 或 Jquery 自动导入本地 CSV 文件

    我的客户想要一个包含导入 CSV 数据但不托管在服务器上的网站 这个想法是为了让他们的销售人员可以展示他们的产品 而无需在他们的电脑上访问网络或设置托管 他们还可以通过从原始 Excel 文档导出新的 CSV 文件来更新数据 而无需了解 H
  • 相等性测试(equals 和 hashcode 方法)

    根据下面的链接 哈希码和等于 https stackoverflow com questions 1990734 hashcode and equals 所以假设如果2个对象相等 即equals 返回true 那么它们的hashCodes
  • Excel - 在每个单元格中用“;”分割

    我想将这些文本拆分到 Excel 中的单元格中 Hello HOW are YOU DOING This is not my name Random People are looking No 它基本上应该是这样的 目前我正在使用这个公式
  • NLP:有什么简单又好的方法可以找到单词之间的语义相似度?

    我不知道 StackOverflow 是否涵盖 NLP 所以我打算尝试一下 我有兴趣找到特定领域中两个词的语义相关性 即 图像质量 和 噪声 我正在做一些研究 以确定相机的评论对于相机的特定属性是正面还是负面 就像每一篇评论中的图像质量一样
  • 什么是 setReplaceMethod() 以及它如何工作?

    我对使用感到困惑setReplaceMethod 看着 setReplaceMethod没有提供解释 谷歌搜索也没什么帮助 QUESTION 请解释setReplaceMethod 它的用法及其工作原理 最好有一个例子 这是我发现的 正如