问题标签 [s4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
446 浏览

r - 对于包含 S4 类的包,推荐的包构建工作流程是什么?

可能重复:
如何使用 Roxygen2 正确记录 S4 类插槽

我想构建一个包含S4 classes使用 R Studio 和roxygen2. roxygen2当我将几个函数引入S4 classes我的包时,我已经使用语法记录了我的所有函数。

现在我意识到没有开箱即用的“@slot”功能。所以我想知道我怎样才能让我的所有文档都为其他功能工作,并像这个线程S4 classes中建议的那样手动记录?

或者换句话说,您会推荐哪个工作流程来构建一个包含老式函数和S4 classes?

编辑:您是否建议将 R Studio 构建工具配置为不创建 .Rd 文件。roxygenize手动然后添加信息?这仍然会导致覆盖类的手动生成的 .Rd 文件......

0 投票
0 回答
1253 浏览

r - S4 中的 setMethod - 如何定义不需要对象作为参数的方法?

在带有 S4 类的 R 中,我定义了一个方法来为一个对象分配两个值:

然后按如下方式使用它

但是,这意味着我必须一直写obj为函数的参数。

是否可以在 S4 中定义一个可以在没有对象本身作为参数的情况下使用的方法?

例如:

我非常感谢任何建议!:)

0 投票
2 回答
867 浏览

r - R S4 类和 Matrix 包中的重载 + 运算符

尝试重载+运算符并将Matrix包与稀疏矩阵一起使用时,我得到了一个奇怪的效果。我首先定义了一个非常简单的类,它不使用 Matrix 包但有一个+操作符。然后我对两个稀疏矩阵求和。第一个M+M添加提供了预期的结果,但第二个抛出了错误。这是一个生成错误的非常简单的代码:

第二次添加会引发以下错误:

如果矩阵不是稀疏的,则不会发生错误。+I 定义和+for sparseMatrix之间是否存在一些干扰?我没有+正确定义运算符吗?

谢谢!

0 投票
1 回答
473 浏览

r - 使用 S3 虚拟类作为 S4 类的插槽,出现错误:得到类“S4”,应该是或扩展类“nls.lm”

版本:

我想制作一个使用 nls.lm (包:minpack.lm)函数的输出对象作为插槽的 S4 类:

现在,如果我想在“构造函数”中调用这个类,我可以做这样的事情(对吗?):

并且对象“pippo”似乎已正确初始化。

如果我改用此代码,则会出现错误:

似乎如果我想在新的一些插槽中进行初始化,这会导致 S3 类插槽出现问题?

关于如何避免这个问题的任何线索?

谢谢

0 投票
1 回答
204 浏览

r - 将“规范”S3 类转换为新的 S4 类

R我想将(强制?)从stats::spectrum(类“规范”)返回的对象转换为新的 S4 类。S3 类“规范”本质上是一个混合格式的各种信息列表(我已经评论了屏幕输出):

现在假设我们为名为“specS4”的类定义了一个新的 S4 生成器,其中插槽名称是“spec”对象中的名称

并从中生成一个新对象:

将每个组件分配psd3到其相应插槽的最佳方法是psd4什么? 一个复杂的问题是spectrum可能会返回NULL一些(已知的)字段;分配这些值会引发错误checkSlotAssignment(对于给定的表示)。

我有一个痛苦的解决方案是:

哪个有效,即使as.specS4.spec是故意不完整的。

有没有更好的方法来实现什么as.specS4.spec?这个解决方案似乎不稳定。

0 投票
1 回答
346 浏览

r - R:找到产生 S4 插槽输出的源代码?

大家好,

当“lme4”中的“lmer”函数运行时,它会生成一个带有很多插槽的 S4 对象。我对这些插槽之一感兴趣,即模型@X,以及如何产生这个“X”插槽输出。我想尝试为我正在使用的不同模型函数(glmmPQL)重现这个输出,它不会自动产生这个'X'输出(仅供参考'lmer'产生一个'mer'类的对象,插槽'X'是一个模型固定效应的矩阵)。下面的代码显示了我在说什么。

我想弄清楚这个'X'数据是如何产生的?我通过在没有'()'的终端中编写'lmer'的代码来查看它,但我在那里找不到任何东西。我也试过 showMethod('lmer') 但它说 function 'lmer': 。

只是想知道是否有办法获取“X”插槽具体在做什么(或 S4 对象中的任何插槽)的源代码?或者有谁知道如何重现这个?非常感谢您的帮助和时间。

0 投票
1 回答
1277 浏览

r - S4类中的R公共方法

我想继承一个 S4 类并向该子类添加一个特殊方法。该方法应该只适用于子类,它对我的​​应用程序中的任何其他类都没有意义。

随着setGeneric它的工作,但我真的必须定义一个通用函数,尽管它只会与这个对象一起使用吗?注释掉的部分有效,但是没有检查是否使用正确的参数调用函数。这样做的正确方法是什么?提前致谢。

0 投票
2 回答
10073 浏览

r - 如何在 R 中创建用户定义的 S4 类的数据框

我想创建一个包含不同变量的 data.frame,包括 S4 类。对于像“POSIXlt”(日期)这样的内置类,这很好用:

但是现在我有一个用户定义的类,让我们说一个带有名称和年龄的“Person”类:

但以下失败:

我还尝试使用 [...]-Operator 为 person 类重载

这允许类似向量的行为:

但是以下仍然失败:

也许我必须重载更多运算符才能将用户定义的类放入数据框中?我敢肯定,一定有办法做到这一点,因为 POSIXlt 是一个 S4 类并且它有效!任何使用新 R5 参考类的解决方案也可以!

我不想把我所有的数据都放到 person 类中(你可能会问,为什么“id”不是 person 的成员,我只是不使用数据框)!这个想法是我的 data.frame 代表数据库中的一个表,其中包含许多不同类型的列,例如字符串、数字……还有日期、间隔、地理对象等……而对于我已经拥有的日期一个解决方案(POSIXlt),用于间隔、地理对象等。我可能需要指定我自己的 S4/R5 类。

提前非常感谢。

0 投票
1 回答
184 浏览

r - 用 3 个点定义 S4 方法

我正在尝试为我创建的对象定义“c”方法。

就像是

问题是我无法定义 ... 的类,以便正确完成调度。任何想法?

0 投票
1 回答
961 浏览

r - 是否有与 unlist() 等效的 S4?

我有一些使用S4对象及其插槽的经验,所以我知道如何访问特定的插槽和子插槽。我想学习的是如何以unlist拆分S3列表的方式“去槽”一个对象。
我的直接目标是让我的一个玩具有一个 S4 对应物,它返回一个对象的元素数量:

(不公平地嘲笑我的代码:-))。我希望不必编写一些递归例程来一次提取一个插槽来转换它们。

编辑:我知道object.size会返回字节数;不是我在这里追求的。