问题标签 [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 回答
366 浏览

r - 嵌套函数的复杂对象初始化范围问题

好的,所以我正在尝试使用 S4 类来构建一个非常复杂的对象,其中的插槽包括六个矩阵、一些列表,可能还有一个或两个厨房水槽。该对象是通过引用和解压缩我已经定义的配置对象来初始化的。用 setClass() 定义类很容易,但我很难找到一种优雅的方法来设置 setMethod("initialize") 中的插槽。

问题是我需要根据该配置对象的部分设置这些六个矩阵的特定元素。对于配置对象的每个元素,我可能必须设置几个矩阵的特定元素。请注意,矩阵位于初始化函数的范围/环境中。然后我在初始化函数中嵌套了函数,这些函数对矩阵进行实际分配,或者无论如何都是这样。这些函数当然可以看到矩阵,但它们不能修改它们是因为如果未在当前环境中定义原始变量,则 <- 运算符会创建一个新矩阵。R 是按值传递,并且意味着它。这对于我试图初始化的 .Object 的插槽也是如此。所以我不能使用嵌套函数来进行初始化。

不幸的是,这些嵌套函数必须修改几个矩阵,因此在主初始化函数中返回值和进行赋值既不实用也不优雅。(但有可能,如果我将矩阵的副本填充到返回的列表中,然后将它们组合到主初始化函数中。虽然很丑,并且需要大量额外的代码。)

并且迭代(这将防止这个范围问题)也不是很实用,因为配置对象的分层性质,它确实希望通过递归调用进行遍历。

我能想到的最后一个选项是使用带有 envir 选项的 assign() 函数来强制赋值应用于非局部变量。但是使用这样的环境似乎很恶心,就像一个 goto 语句......

那么,最海盗的做法是什么?坚持纯函数式编程并构建丑陋的数据结构只是为了低效地绕过冗余矩阵?尝试找到一个完全避免使用函数的迭代解决方案?通过玩环境来使用深层魔法?

0 投票
1 回答
3516 浏览

r - 如何从 ROCR 包中导出数据

我正在尝试使用 ROCR 包从分析中导出生物特征数据。这是我到目前为止所做的代码:

这会产生几个插槽。我想使用以下命令将结果值导出到文本文件中以进行 Excel 修改:

write(pred, "filename")

但是,当我尝试写入文件时,我收到一条错误消息:

有没有办法解决?

我会很感激任何建议。谢谢!

马特·彼得森

0 投票
4 回答
2185 浏览

r - R 代码示例/最佳实践

我是 R 新手,很难将来自各种在线资源的信息拼凑在一起,这些信息与编写 R 代码的“良好”实践有关。我已经阅读了基本指南,但我一直很难找到绝对是最新的信息。

  1. 有哪些编写/记录良好的 S3 类的示例?
  2. 对应的S4班怎么样?
  3. 您在评论 .R 类/函数时使用什么约定?您是否将所有评论都放在 .Rd 文件和 .R 文件中?这些文件的同步很烦人吗?
0 投票
3 回答
11118 浏览

r - R中的@符号是什么意思?

在 marray 和limma等包中,当加载复杂对象时,它们包含使用 @ 符号访问的“成员变量”。这是什么意思,它与 $ 符号有何不同?

0 投票
1 回答
1632 浏览

r - Inspect S4 methods

How can I view the definition of a S4 function? For instance, I would like to see the definition of TSconnect in package TSdbi. The command

reveals that there is, among others, a function for drv="histQuoteDriver", dbname="character".

How can I see the definition of this function? If it were a S3 function, there would be only the first argument definable (drv), which could be inspected with print(TSconnect.histQuoteDriver).

Edit: From r-forge I found out the desired output:

Is there a way to get this definition from within an R session?

0 投票
3 回答
224 浏览

r - 在 R 中,如何根据另一个对象的类设置 S4 类

我需要从 Bioconductor 的 ShortRead 库中创建一个 ShortReadQ 类型的对象。

质量槽需要是从 QualityScore 继承的对象,我可以很容易地从我希望模拟的另一个 ShortReadQ 对象中确定它。

在构造函数参数中使用该信息(“SFastqQuality”)的最佳方式是什么?

0 投票
2 回答
352 浏览

r - 如何修补 R 包中的 S4 方法?

如果您在包中发现错误,通常可以使用 修补问题fixInNamespace,例如fixInNamespace("mean.default", "base").

对于 S4 方法,我不知道该怎么做。我正在查看的方法在gWidgetstcltk包中。你可以看到源代码

我找不到fixInNamespace.

我想setMethod可能会成功,但是

有任何想法吗?

0 投票
3 回答
2086 浏览

r - 在 R 中,如何创建一个 S4 对象的方法来直接调整该对象插槽内的值?

有没有办法允许 S4 对象的方法直接调整该对象插槽内的值,而无需将整个对象复制到内存中,并且必须在方法结束时将其重新写入父环境?现在我有一个对象,它有插槽,它可以跟踪自己的状态。我调用了一个将其推进到下一个状态的方法,但现在似乎我必须将每个值(或调用该方法的对象的副本)分配()回父环境。结果,面向对象的代码似乎比在循环中简单地调整各种状态变量的代码运行慢很多。

0 投票
1 回答
566 浏览

r - 输入 S4 对象

一个人如何dput()成为 S4 对象?我试过这个

请注意,如果我dput()是 S4 对象,我无法再次重建它。你的意见?

0 投票
7 回答
4975 浏览

oop - 在 R 编程中使用 S4 方法什么时候有回报

我经常在专业环境中使用 R 编程,我也为客户或同事编写包。这里的一些程序员有 Java 背景,坚持以面向对象的方式做所有事情,使用 S4 方法。另一方面,我的经验是,当试图让代码做你想做的事情时,S4 实现的性能通常会更差,并且会引起更多的头痛。

我绝对同意,在某些情况下,您必须能够以受控方式构造复杂对象或附加现有对象。但大多数时候,S4 实现也可以使用经典列表轻松完成,而无需像定义标准泛型、方法、构造函数、初始化程序等那样麻烦。

您何时考虑为 R 编写 S4 实现?

编辑:为了清楚起见,我确实很欣赏 R 中关于 OO 的一般答案和讨论。OOP 可以在 R 中以多种方式完成,但我的问题实际上是针对专门使用 S4 方法的附加值。