问题标签 [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.
r - 在 R6 类中包装闪亮的模块
我目前正在将闪亮的模块包装在 R6 类中,并想听听有关此设计的一些意见。
基本上,我对干净的方法(可读代码)感兴趣,并希望类允许嵌套(请参阅此处的嵌套模块部分)。当前代码满足这两个标准,但我对实现的细节有一些疑问(请参阅下面的“问题”)。
语境
我正在编写多态模块,并认为 R6 是在模块之间继承某些行为的好方法。创建的对象跨会话共享数据(不包括在下面的示例中),所以我在global.R
.
班级代码
简单使用
嵌套
问题
- 有没有人做过类似的事情?如果是这样,我的方法的主要区别在哪里?
- 使用安全
shiny:::createUniqueId()
吗?如果没有,包中是否有类似的功能可用base
?我真的想限制我正在开发的包的依赖关系。 callModule
由于嵌套,我被警告过使用包装器。任何人都可以展示这种方法失败的用例/案例吗?- 使用静态函数(而不是成员函数)来构建 ui 代码会更好吗?
提前感谢您提供有关此主题的任何意见!
r - 从 R6 中的其他私有值创建私有值
有没有办法使用私有值来在内部创建另一个私有值R6Class()
?我收到错误。
我也尝试过用 创造b
,b = 2 * a
但仍然是不可能的。我应该怎么做?
谢谢
r - S4 %*% 方法中无法识别 R6 类
我有一个希望%*%
定义方法的 R6 类。我在另一个问题中看到了如何使用新的 S4 方法来实现这一点。但是,我尝试过这种方法,但当我尝试%*%
为我的 R6 类创建 S4 方法时它失败了。例如:
x %*% y 中的错误:需要数字/复数矩阵/向量参数
然而,如果我创建该foo
方法,它仍然有效。
为什么它不适用于该%*%
方法?
r - 如何在 R6 类中找到对象实例化的名称?
ann <- Person$new("Ann", "black")
在上面的例子中(来自这个 Introduction),我如何得到“ann”?
例如,我需要一个返回“ann”的方法 ann$getName。
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
。
r - R6中self和private方法调用的区别
最近我发现自己在 R6 中编写了一些东西,在处理一些对象很有趣的同时,一个有趣的问题出现了。当创建一个私有方法(例如 bar 的 foo)并在其他公共方法中调用它时,如果我使用以下方法调用它,它就会起作用:
和
我要问的是:这两种在 R6 中调用方法的方式有什么区别?先感谢您!
r - 可以为 R6/参考类定义索引方法吗?
我有一个 R6 类,它基本上是一个类似矩阵的对象的包装器。我想为我的类定义一个方法,让我可以直接索引和子集矩阵的元素。
目前,我的代码如下所示:
但是,这需要创建一个顶级[
方法,然后直接访问我的类的私有成员。如果可能的话,我想避免这种情况。
我尝试在我的类中添加一个方法,但它不起作用:
有没有办法在不违反封装的情况下做到这一点?
虽然这适用于 R6,但也欢迎使用参考类的答案。
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__”(无论它是否是动态的)。
对此有什么想法吗?就像在文档中一样
r - R - R6 - 高阶函数 - 封闭函数的范围
我尝试动态创建 R6 类的初始化函数。首先,我创建未锁定的类定义:
在我添加初始化函数之后的某个地方:
其中 init_func_generator:
当我创建一个对象时,执行简单的初始化函数就可以了。
但是,当我尝试从创建的“初始化”范围之外访问“规范”变量时:
我得到:
我尝试实现的目标有可能吗?
r - 在 R6 类中使用 rcpp 函数
有没有办法在开发包时在 R6 类中使用 Rcpp 函数?示例:我的包的 /src 文件夹中有一个 add.cpp,如下所示
我希望在我的 R6 类中使用 Rcpp add 函数作为一个公共函数,称为 Numbers,它位于我的包的 /R 文件夹中的 Numbers.R 文件中