问题标签 [reference-class]

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 回答
237 浏览

r - Roxygen2 - 记录参考类时出现“参数长度为零”错误

为了演示一个最小的案例,假设我有以下包:

当我roxygenize(在RStudio中,在“构建和重新加载”之前)。我得到:

怎么了?如何解决此错误?

我的设置:

  • Roxygen2 3.1.0
    • 使用 roxygen 生成(在 RStudio 中):
      • 文件
      • 整理字段
      • 命名空间文件
    • 运行时自动 roxygenising(在 RStudio 中):
      • R CMD 检查
      • 源代码和二进制包构建
      • 构建和重新加载
  • R:3.0.2(飞盘航行)
  • IDE:RStudio 0.98.490
  • 操作系统:Windows 8.1
0 投票
1 回答
1570 浏览

r - R 包 - 我应该导入 `methods` 包吗?

setRefClass用来创建类,因为它是methods包的一部分,所以我假设你需要将此依赖项声明为import.

但是,以下最小示例Rcmd.exe checkimporting时失败methods

出现以下错误(我的包被称为Test):

因此,据我所知,似乎有人告诉我删除importformethods并隐藏包对methods. 我的解释是否正确,如果是,为什么要隐藏对 的依赖methods

我的设置:

  • 氧气2 3.0.0
  • R:3.0.2(飞盘航行)
  • IDE:RStudio 0.98.490
  • 操作系统:Windows 8.1
0 投票
1 回答
126 浏览

r - R参考类中字段(数据成员)的自动更新

decorator @property与python中的任何等价物吗?

也就是说,由于另一个字段的更新,一个字段会自动更新(访问时),而不是在访问之前重新计算它。

更新 2014-02-06

通过将“一个”字段定义activeBindingFunction为“另一个”字段的一个,可以打开自动更新(参见@jdharrison 的答案)。但是,有没有办法检查这样的更新是否是惰性评估?如果没有,我们怎样才能做到这一点?

(后来的编辑:内部的“非正式”打印功能activeBindingFunction很明显评估是惰性的。有什么方法可以更正式地检查这个问题吗?)

为了更好地说明我的问题,下面是一段 python 代码,它通过decorator @property- 产生所需的惰性行为 - 请耐心等待我将其放入带有R标记的问题中。

互动环节

0 投票
1 回答
124 浏览

r - 加速 R 参考类中的字段访问

我一直在使用R 参考类编写代码。然而,随着我的进步,程序变得慢得令人无法忍受。为了演示这个问题,举个例子:

它需要:

  • 调用方法的 4s
  • 7s 调用生成随机数
  • 19s 增加一个字段值

这是给我带来问题的最后一个结果。我显然不希望增加一个数字比生成一个随机数花费两倍的时间。我的代码涉及大量访问和更改引用类中的字段值,而这个性能问题使程序几乎可用。

我的问题:我能做些什么来提高 R 参考类中字段查找/访问的性能吗?有什么我应该做的不同的事情吗?

0 投票
2 回答
65 浏览

r - 仅列出显式定义的方法(参考类)

有没有办法只列出在类定义中明确定义的引用类的那些方法(与“系统类”继承的那些方法相反,例如refObjectGeneratoror envRefClass)?

您当前通过调用该$methods()方法获得的结果(请参阅 参考资料?setRefClass):

我在找什么:

0 投票
1 回答
36 浏览

r - 如何从ctor中具有强制参数的类继承?

似乎如果我们创建一个B继承自 class的类A,则在创建A时会调用 的构造函数B。这会导致以下问题 -A其 ctor 中可能有一个强制参数(用于在实例化期间使用),因此运行以下命令:

我得到错误

这似乎很奇怪 - 为什么会发生这种情况,我该怎么办?

0 投票
1 回答
387 浏览

r - 依赖注入:如何在 R 中使用/实现 PicoContainer 框架

问题

一般问题

您将如何开始在 R 中实现PicoContainer-Framework

具体问题

“微微注册表(机制)”实际上会是什么样子?我想出了一个“穷人的版本”,它只适用于单个注册过程(参见DefaultPicoContainer下面示例中的类;此时方法getComponentInstance()实际上并没有利用信息getRefClass("MovieLister")来查找注册的组件)


例子

AFAIU,R 中还没有任何PicoContainer-Framework的实现,所以我考虑了它的外观。

到目前为止,这是我能想到的。它的灵感来自Martin Fowler关于依赖注入的文章。

1.业务逻辑层示例

接口(类)MovieFinder

班级MovieLister

班级ColonMovieFinder

2. R中Pico容器框架的适配

班级ConstantParameter

班级DefaultPicoContainer

功能configurecontainer

3. 测试

尽管我知道这个测试实际上超出了纯单元测试的范围,但我还是使用了单元测试。


背景

我开始着迷于面向对象设计的SOLID原则,尤其是依赖倒置依赖注入的概念/原则,并希望开始在我的 R 程序中遵循它们。

非常感谢任何有关如何在 R 中最好地遵循这些原则的指针

0 投票
1 回答
202 浏览

r - 扩展原始错误消息

有没有办法直接扩展/增加/覆盖当调用我自己没有编写的函数失败时抛出的原始错误消息(即来自基本 R贡献包的函数)?

例子

考虑以下参考类:

指定正确值时没有错误:

指定错误值时产生的错误:

现在,我想包含有关实际“导致问题”的类的信息。

也许这看起来像这样:

我目前实现接近目标的解决方法通常如下所示:

首先实例化一个“空白”对象后

当尝试通过显式 setter 方法为字段设置错误值时,这会给我以下错误:

我不喜欢它,原因如下:

  1. 它包含很多代码,只需要一点额外的信息,并且这tryCatch()部分使代码更难阅读。

  2. 由于 , AFAIU 的性质,如果我期望一些“常规”行为(即“即使有警告,字段值仍然设置”)tryCatch(),我也有义务将.self$field(field=field, value=value)语句放入函数中。warning()那是重复的代码。

  3. 在我看来,通过强制错误消息as.character()(为了能够通过等添加信息所必需的 AFAIU paste())有时会切断错误消息。

  4. 这样我就不得不通过显式的 setter 函数 ( <obj>$setField(<field>, <value>)) 设置我的字段值,而不是通过“内置”initialize函数 ( new("A", <field>=<value>))设置它们

0 投票
1 回答
617 浏览

r - R参考类和doparallel

最近,我正在尝试将引用类与parallel. 我尝试了 4 种不同的方案,多核、MPI、Socket 和 Forking。但是,只有多核才能产生正确的结果。而 MPI、PSOCK 和 Forking 都会产生错误。

PS:我在支持 MPI 的计算机集群上运行此脚本。

它可能与参考类的并行计算有关

更新:

更多调查表明,引用类实例是克隆的,但不是引用类定义。

0 投票
1 回答
584 浏览

r - ReferenceClass 的 `print` 方法

我有:

MyClass <- setRefClass("MyClass" , fields = list(data="numeric"))

让我们初始化一个对象MyClass

OBJ <- MyClass(数据=1:4)

...并在屏幕上打印:

对象

我想改变它的打印方式,所以我写了这个方法:

print.MyClass <- function(x) { cat("这是打印的表示:") print(x$data) }

现在这有效:

打印(OBJ)

这不会:

对象

有什么方法可以通过键入来实现我的打印方法OBJ吗?

我也尝试过show,或者(OBJ),但不爱我。