带有 lapply 的内部 S3 泛型

2023-11-24

我有一个 S3 通用函数,我希望将其作为包的内部部分。如果可能的话我宁愿不导出它。一个有趣的缺点是,似乎lapply无法找到或使用正确的 S3 方法。有谁知道这种行为背后的原因?下面是一个可重现的示例,其中涉及从我的 github 安装虚拟包。

在这种情况下,通用函数是docheck这将返回TRUE如果该物体是"foo" and FALSE否则。

library(remotes)
install_github("jtlandis/SOExample")
#> Skipping install of 'SOExample' from a github remote, the SHA1 (27ab918c) has not changed since last install.
#>   Use `force = TRUE` to force installation
library(SOExample)

foo 函数只是一个NA对象与"foo" class.

foo
#> function () 
#> structure(NA, class = "foo")
#> <bytecode: 0x0000000015033878>
#> <environment: namespace:SOExample>

fun_success()仅显示内部(未导出)S3 功能工作的情况。

fun_success
#> function (x) 
#> {
#>     docheck(x)
#> }
#> <bytecode: 0x0000000013f83100>
#> <environment: namespace:SOExample>

fun_success(foo())
#> [1] TRUE

fun_failure()调用相同的内部泛型方法,但失败

fun_failure
#> function (x) 
#> {
#>     lapply(list(x), docheck)
#> }
#> <bytecode: 0x0000000015e68df0>
#> <environment: namespace:SOExample>

fun_failure(foo())
#> Error in UseMethod("docheck"): no applicable method for 'docheck' applied to an object of class "foo"

Created on 2021-07-24 by the reprex package (v2.0.0)


R 对于确保正确注册 S3 方法变得越来越挑剔。注册包泛型方法的常规方法是使用 NAMESPACE 文件中的 S3method() 。但如果你想保留所有docheck未导出,那么您需要自己注册 S3 方法。你可以用.S3method()功能。在您的 R 文件中,添加此行

# Existing line...
# docheck.foo <- function(x) T
# New line...
.S3method("docheck", "foo", docheck.foo)

这将允许lapply来找到方法。

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

带有 lapply 的内部 S3 泛型 的相关文章

  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • R 中的快速 QR 分解

    我有大量矩阵 需要对其执行 QR 分解并存储生成的 Q 矩阵 进行归一化 以便 R 矩阵在其对角线上具有正数 除了使用之外还有其他方法吗qr 功能 这是工作示例 system time Parameters for the matrix t
  • 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
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集
  • 如何从 R 中的 txt 文件读取矩阵?

    我有一个带有矩阵的txt文件 Matrix txt 重要 数字之间没有空格 0100 1001 1100 我想在 R 中将其作为矩阵读取 我该怎么做 我尝试使用 as matrix read table Matrix txt sep 但失败
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • R:如何获取该月的周数

    我是 R 新手 我想要该日期所属月份的周数 通过使用以下代码 gt CurrentDate lt Sys Date gt Week Number lt format CurrentDate format U gt Week Number 3
  • read_html(url) 和 read_html(content(GET(url), "text")) 之间的区别

    我正在看这个很棒的答案 https stackoverflow com a 58211397 3502164 https stackoverflow com a 58211397 3502164 解决方案的开头包括 library httr
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • SPSS 中的标准化残差与 R rstandard(lm()) 不匹配

    在寻找 R 相关解决方案时 我发现 R 和 SPSS 版本 24 在计算简单线性模型中的标准化残差方面存在一些不一致 看来SPSS所谓的标准化残差匹配 R学生化残差 我完全不认为某处存在软件错误 但显然这两个程序之间存在差异 看看这个例子
  • 任意列中包含字符串的子集行

    我有一个如下所示的数据集 Col1 Col2 Col3 abckel NA 7 jdmelw njabc NA 8 jdken jdne 如何对数据集进行子集化 使其仅保留包含字符串 abc 的行 最终预期输出 Col1 Col2 Col3
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • 麦当劳 omega:R 中的警告

    我正在计算几种不同尺度的欧米茄 并在 R 中使用不同的 omega 函数获取不同比例的不同警告消息 我的问题是如何解释这些警告以及报告检索到的 omega 统计数据是否安全 当我使用 从 alpha 到 omega 内部一致性估计普遍问题的
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works

随机推荐

  • 为列表视图中的每个元素设置不同的分隔线颜色

    我想要一个列表元素之间具有不同分隔符的列表 我使用此代码定义高度为 1 的白色分隔线 listView setDivider new ColorDrawable Color WHITE listView setDividerHeight 1
  • 如何从位图创建“像素化”SVG 图像?

    我有一个 16x16 位图 想要创建一个包含 16x16 正方形以及图像像素颜色的 SVG 有没有一种简单的方法可以实现这一目标 我目前的想法是使用Python和PIL读取位图图像并动态创建具有相应对象的SVG图像文件 但这感觉有点笨拙 就
  • 有没有办法在 React Native 中全局设置字体?

    我需要创建一种适用于所有内容的自定义字体Text整个应用程序中的组件 有没有办法在 React Native 中全局设置字体 一种方法是为 RN 创建一个包装器Text说 MyTextCustomFont const MyTextCusto
  • Android 获取图片文件路径

    我有一个可以制作图片并上传的应用程序 上传需要照片的文件路径 但我无法获取 这是我的代码 public void maakfoto View v Intent cameraIntent new Intent android provider
  • 使用 C# winform 的 Zeromq pub/sub 示例

    我正在尝试创建一个在发布 订阅模型中使用 ZeroMQ clrzmq net 绑定 x86 通过 nuget 的 C Winform 应用程序 经过大量搜索 我只能找到独立的 C 示例 其中代码使用 while 语句无限期地处理新消息 当我
  • 是否可以借用结构体的一部分作为可变的而其他部分作为不可变的?

    如果结构体的字段是私有的 是否可以借用结构体的一部分作为可变的 而另一部分作为不可变的 fn main let mut ecs EntityComponentSystem new for e id in ecs get entities w
  • 使用 cqlsh 复制非常大的 cassandra 表时出现 PicklingError

    当我尝试使用以下命令将表复制到 cassandra 时 copy images from images csv 我收到错误 PicklingError Can t pickle
  • 编译器优化能否消除在 for 循环条件中重复调用的函数?

    我正在阅读有关哈希函数的内容 我是一名中级计算机科学学生 并发现了这一点 int hash const string key int tableSize int hasVal 0 for int i 0 i lt key length i
  • 如何向用户授予 SSRS 浏览器对文件夹的权限,而不授予他们访问根目录的权限

    当用户浏览到 http ssrs server reports 时 除非他们拥有根文件夹的浏览器权限 否则他们的访问会被拒绝 如果他们在文件夹 Dept 1 Reports 上有浏览器 则他们可以成功浏览到 http ssrs server
  • MVC5 Razor html.dropdownlistfor 当值在数组中时设置选择

    我正在使用 C 和 NET Framework 4 6 1 开发 ASP NET MVC 5 应用程序 我有这个View model MyProject Web API Models AggregationLevelConfViewMode
  • 如何递归解压嵌套的 ZIP 文件?

    假设嵌套 ZIP 文件深处有一个秘密文件 即 zip 文件内的 zip 文件内的 zip 文件 等等 zip 文件的名称为1 zip 2 zip 3 zip etc 我们不知道 zip 文件嵌套的深度 但可能有数千个 循环遍历所有文件直到最
  • 在 Sails.js 中处理数据库环境配置

    我遇到的问题与以下引用有关官方文档 注意 如果模型使用了与适配器的任何连接 则与该适配器的所有连接都将加载到 sails lift 上 无论模型是否实际使用它们 在上面的示例中 如果模型配置为使用 localMysql 连接 则 local
  • 将远程 github 存储库的更改合并到本地存储库

    我前段时间在 github 上分叉了一个存储库 做了一个小更改并将更改推回我的 github 分叉 此后原始存储库已更改 我想将原始存储库中的更改合并到我的分支中 我对 git 和 github 都很陌生 我需要具体的命令来操作 git r
  • 为什么 apt-get 功能在 Mac OS X v10.9 (Mavericks) 的终端中不起作用?

    我当时正在看this 正如您所看到的 我被告知要输入的第一个命令是 sudo apt get install python setuptools 当我这样做时 它输出 sudo apt get command not found 我不知道为
  • -I GCC 中的标志(Linux)

    我找到了一个带有 Makefile 的源文件包 我浏览了它 在 CFLAG 变量中 有一个 FLAG I 我在网上搜索过 但找不到它实际的作用 它与 C 文件中包含的库文件有关吗 stdio h unistd h pthread h 请指出
  • Javascript 获取对象属性名称

    我传递了以下对象 var myVar typeA option1 one option2 two 我希望能够拔出钥匙typeA从上面的结构来看 这个值每次都会改变 所以下次它可能会改变typeB 所以我想知道是否有办法让我做类似以下伪代码的
  • LibGDX 中的 AssetManager

    我正在尝试使用AssetManagerLibGDX 中的类 我了解它是如何工作的 但我正在尝试实现一个加载屏幕 我已遵循AssetManagerTest java file here 但我很难弄清楚如何让它正常工作 有人能指出我正确的方向吗
  • 是否可以更改 ToolStripMenuItem 工具提示字体?

    我有一个动态填充的 ContextMenuStrip 其中每个 ToolStripMenuItem 都有一个工具提示的格式化文本 而且 为了使该文本对用户有意义 我必须使用等宽字体 例如 Courier New 默认字体是常规的非等宽字体
  • 当字段为空时,远程属性不会触发

    我在用着RemoteAttribute对于我表单上的特定字段 其目的并不重要 重要的是 每当字段发生更改时 它都需要触发验证操作 这对我来说工作得很好 除非该字段更改为空白 我用谷歌搜索过这个但没有找到结果 有谁知道如果RemoteAttr
  • 带有 lapply 的内部 S3 泛型

    我有一个 S3 通用函数 我希望将其作为包的内部部分 如果可能的话我宁愿不导出它 一个有趣的缺点是 似乎lapply无法找到或使用正确的 S3 方法 有谁知道这种行为背后的原因 下面是一个可重现的示例 其中涉及从我的 github 安装虚拟