问题标签 [r6]

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 投票
2 回答
1902 浏览

r - 在 R6 类中包装闪亮的模块

我目前正在将闪亮的模块包装在 R6 类中,并想听听有关此设计的一些意见。

基本上,我对干净的方法(可读代码)感兴趣,并希望类允许嵌套(请参阅此处的嵌套模块部分)。当前代码满足这两个标准,但我对实现的细节有一些疑问(请参阅下面的“问题”)。

语境

我正在编写多态模块,并认为 R6 是在模块之间继承某些行为的好方法。创建的对象跨会话共享数据(不包括在下面的示例中),所以我在global.R.

班级代码

简单使用

嵌套

问题

  1. 有没有人做过类似的事情?如果是这样,我的方法的主要区别在哪里?
  2. 使用安全shiny:::createUniqueId()吗?如果没有,包中是否有类似的功能可用base?我真的想限制我正在开发的包的依赖关系。
  3. callModule由于嵌套,我被警告过使用包装器。任何人都可以展示这种方法失败的用例/案例吗?
  4. 使用静态函数(而不是成员函数)来构建 ui 代码会更好吗?

提前感谢您提供有关此主题的任何意见!

0 投票
1 回答
316 浏览

r - 从 R6 中的其他私有值创建私有值

有没有办法使用私有值来在内部创建另一个私有值R6Class()?我收到错误。

我也尝试过用 创造bb = 2 * a但仍然是不可能的。我应该怎么做?

谢谢

0 投票
0 回答
73 浏览

r - S4 %*% 方法中无法识别 R6 类

我有一个希望%*%定义方法的 R6 类。我在另一个问题中看到了如何使用新的 S4 方法来实现这一点。但是,我尝试过这种方法,但当我尝试%*%为我的 R6 类创建 S4 方法时它失败了。例如:

x %*% y 中的错误:需要数字/复数矩阵/向量参数

然而,如果我创建该foo方法,它仍然有效。

为什么它不适用于该%*%方法?

0 投票
1 回答
140 浏览

r - 如何在 R6 类中找到对象实例化的名称?

ann <- Person$new("Ann", "black")

在上面的例子中(来自这个 Introduction),我如何得到“ann”?

例如,我需要一个返回“ann”的方法 ann$getName。

0 投票
1 回答
148 浏览

r - 在 R6 对象中使用 memoise

全部,

我是R6的新手。我正在尝试创建一个通过该memoise函数缓存的私有对象。背景思想是这个对象将由计算密集型计算定义,我想避免在第一次之后重新运行。

我正在尝试复制以下行为:

您应该观察到第一个Test(1)需要一两秒钟才能运行,而第二个Test(1)是即时的。

我在 R6 世界中的 MWE 是:

这应该告诉我rnorm(1e8),但我得到了错误:

Error in private$..Z() : object 'cache' not found

快速编辑我的对象让我知道,在引擎盖下,..Z 看起来像:

所以看起来我在设置我的memoise. 看看上面的内容,我不是 100% 清楚它是如何memoise工作的——如果我看不到缓存,它是如何存在的?通常not found错误是由于范围界定造成的,使用private和会变得复杂R6

0 投票
1 回答
855 浏览

r - R6中self和private方法调用的区别

最近我发现自己在 R6 中编写了一些东西,在处理一些对象很有趣的同时,一个有趣的问题出现了。当创建一个私有方法(例如 bar 的 foo)并在其他公共方法中调用它时,如果我使用以下方法调用它,它就会起作用:

我要问的是:这两种在 R6 中调用方法的方式有什么区别?先感谢您!

0 投票
1 回答
102 浏览

r - 可以为 R6/参考类定义索引方法吗?

我有一个 R6 类,它基本上是一个类似矩阵的对象的包装器。我想为我的类定义一个方法,让我可以直接索引和子集矩阵的元素。

目前,我的代码如下所示:

但是,这需要创建一个顶级[方法,然后直接访问我的类的私有成员。如果可能的话,我想避免这种情况。

我尝试在我的类中添加一个方法,但它不起作用:

有没有办法在不违反封装的情况下做到这一点?

虽然这适用于 R6,但也欢迎使用参考类的答案。

0 投票
1 回答
70 浏览

r - R6Class 错误 __Deferred_Default_Marker__

我正在实现一个新的 R6Class 并尝试动态添加新成员(https://cran.r-project.org/web/packages/R6/vignettes/Introduction.html#adding-members-to-an-existing-class ) 但是当我实现 getx2 函数时,我得到了这个错误“__Deferred_Default_Marker__”(无论它是否是动态的)。

对此有什么想法吗?就像在文档中一样

0 投票
1 回答
131 浏览

r - R - R6 - 高阶函数 - 封闭函数的范围

我尝试动态创建 R6 类的初始化函数。首先,我创建未锁定的类定义:

在我添加初始化函数之后的某个地方:

其中 init_func_generator:

当我创建一个对象时,执行简单的初始化函数就可以了。

但是,当我尝试从创建的“初始化”范围之外访问“规范”变量时:

我得到:

我尝试实现的目标有可能吗?

0 投票
1 回答
285 浏览

r - 在 R6 类中使用 rcpp 函数

有没有办法在开发包时在 R6 类中使用 Rcpp 函数?示例:我的包的 /src 文件夹中有一个 add.cpp,如下所示

我希望在我的 R6 类中使用 Rcpp add 函数作为一个公共函数,称为 Numbers,它位于我的包的 /R 文件夹中的 Numbers.R 文件中