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

r - setRefClass 按值传递,按引用传递

我怀疑我不了解setRefClassR 中的所有方面。假设我有一个setRefClass初始化的实例。我想创建变量X,以便该变量等于实例的副本或引用setRefClass. 有没有区别:

我不完全理解,我的代码似乎有奇怪的行为。

谢谢你的帮助

0 投票
1 回答
685 浏览

r - R中的错误消息:“方法()的参数必须命名,或者一个命名列表”

我是在 R 中创建类和方法的新手,并且遇到了一个我没有找到太多文档的问题。我创建了一个类“DataImport”,并尝试添加以下方法:

当我运行此代码时,我收到以下错误:

我可以直接在这个方法之前添加一个方法,它工作得很好,但是这个没有。我不太明白为什么会这样或如何解决它。

0 投票
1 回答
149 浏览

r - 是否可以创建引用类来记录调用

我有一个关于参考类的问题。我的问题是在我正在开发rCharts的 R 包的上下文中。它使用参考类从 R 创建交互式绘图。

创建情节涉及一系列调用。这是一个示例,首先创建散点图,然后添加线图。

现在,由于引用类就像一个闭包,我想知道是否可以记录所做的调用。这个想法是,如果我可以记录调用的顺序,那么我可以自动插入用于创建可视化的源代码以及 html。

我试图看看我是否可以使用sys.functionor match.call,但没有得到任何地方。如果有人能指出我如何解决这个问题,将不胜感激。

0 投票
1 回答
460 浏览

r - 动态生成引用类

我试图在 R 包中动态生成引用类,事实证明这相当困难。以下是我采用的方法和遇到的问题:

我正在创建一个包,希望能够在其中动态读取模式并自动生成关联的引用类(想想 SOAP)。当然,这意味着我将无法在包源中预先定义我的参考类。

我最初尝试使用一个简单的方法创建一个新类:

当然,在交互执行时可以正常工作,但是当包含在包源中时,我得到一个locked binding错误。从我的阅读来看,发生这种情况是因为在交互运行时,类信息存储在未锁定的全局环境中,而我的包的基本环境被锁定。

然后我发现了一个线程,它建议使用一些东西来达到以下效果:

当我尝试构建包时,这实际上使 R/Studio 崩溃,所以很遗憾,我没有它生成的错误的日志,但它肯定没有工作。

接下来我尝试在我的包中创建一个新环境,我可以使用它来存储这些引用类。所以我.classEnv <- new.env()在我的包源中添加了一行(不在任何函数内部),然后在创建新的引用类时尝试使用这个类:

这实际上似乎工作正常,但会产生以下警告:

那么,由于某种原因,methods::getPackageName()无法确定我的新环境在哪个包中?

有没有办法以不同的方式创建我的新环境,以便getPackageName()正确识别包?我可以添加一些功能来帮助getPackageName()检测包裹吗?如果我可以处理警告,这甚至会起作用,还是我通过尝试动态创建引用类来滥用引用类?

0 投票
1 回答
455 浏览

r - 使用参考类作为因子的水平

有没有人有使用参考类作为因素水平的经验?这是我在我的一个data.frame包中添加“类外键”支持的目标的一步。

我最终希望创建一个data.frame可以将与因子关联的代码作为整数存储的方法,但该因子的级别实际上是参考类对象,而不是通常使用的字符向量因子。我已经能够找到一些关于使用 S4 对象作为因子级别的信息,但这些技术似乎不适用于参考类。

例如,一个简单的:

似乎没有任何工作。看起来,在我最好的情况下,我可以到达factor()分析exclude参数的行:

此时一切都崩溃了,因为我不允许创建“S4”类型的向量。

任何关于如何解决这个问题的想法,或者 - 甚至更好 - 以data.frame友好的方式将整数映射到引用类对象的替代方法将不胜感激!


编辑:针对@Aaron 的以下问题:

这里的简单解决方案是将整数存储在中data.frame,然后维护一个单独的列表/data.frame负责将这些 ID 映射到其他一些数据(例如引用类对象)。这将保留完成我需要的所有必要数据,但对我来说不太优雅,原因如下:

  1. 我正在设想一种解决方案,它允许我打印出引用类对象本身的某些部分,而不是 ID。例如,如果我将员工 ID(整数)映射到“员工”类,我希望data.frame打印员工的姓名,而不是他们的 ID。
  2. 我希望能够直接从data.frame. 以同样的方式,as.character(myDataFrame$someColumn)这会给我该列的标签(假设它是一个因素),而不是实际存储在data.frame.

同样,如果有更好的方法来解决这个问题,我非常愿意接受这个问题的替代解决方案!

0 投票
1 回答
97 浏览

r - 从 ReferenceClass 方法返回 data.table 的副本

我尝试data.table从 ReferenceClass 的方法返回 s 的副本:

但是,调用dummy$getTab()会产生一个我不明白的错误:

我不知道它是什么意思以及它来自哪里。另外,以下两个程序可以正常工作:

任何帮助表示赞赏。

0 投票
1 回答
1847 浏览

r - 如何使用引用类在 R 中的父类中设置字段?

我正在尝试params在 Template 类中设置字段并对其进行验证,所以我可以这样做TemplateClass$new(params)并且它会自动验证,但出现错误:

编辑:我似乎已经通过将类中的initialize方法更改为. 但我不明白为什么需要这样做。Templateinitialize = function(params = NULL){}

另外,我看到其他人callSuper()在该类不包含任何超类时使用。这是什么原因?

0 投票
2 回答
348 浏览

r - 在 GUI 中使用 R 引用类将值从一个窗口传递到另一个窗口

我正在使用 gWidgets 在 R 中制作 GUI。到目前为止,我一直在通过全局环境将值从一个窗口传递到另一个窗口。使用全局环境实现起来很简单,但并不理想。一个问题是R CMD check抱怨缺少全局变量的可见绑定。

作为这个问题的解决方案,一些 R 程序员已经提到了引用类。但是要理解引用类在这种情况下是如何工作的,举一个简单的例子真的很有帮助。

让我给一个愚蠢的 GUI 来使用。当用户点击第一个窗口的按钮时,它会将模型m置于全局环境中。第二个按钮m从全局环境中获取并给出输出。当您再次点击第一个按钮时,它将创建一个新模型m并更改第二个按钮的输出。如果关闭第一个窗口,第二个窗口中的按钮仍然可以工作,因为m是在全局环境中。

在此示例中如何使用引用类?

0 投票
0 回答
463 浏览

r - 如何加载存储在 inst 文件夹中的 R 引用类?

我有一些代码要在用户加载我的包时运行。该代码包括创建引用类(父类)和source存储在inst. 这是一个玩具版本:

example.R文件定义了一个参考类。

我不得不打电话library(methods),因为运行methods时没有定义包.onLoad。所以,这行得通,但是当我运行时出现错误,R CMD check我不知道如何避免它。

错误是指在 中initialize定义的函数Parent。不知何故,该Child课程在此过程中没有看到它R CMD check,但它在交互模式下工作。

我知道我正在做的事情是非常规的,但我没有看到任何其他方式来满足我的设计要求。出于多种原因,example.R必须将其存储在 中inst,并且我需要检查objects其中定义的内容,example.R而无需在当前环境中对其进行采购(如果定义了正确的对象,我将继续进行采购example.R,但那是另一回事了)。

对于如何解决这个问题,有任何的建议吗?

我在 git repo 中设置了玩具示例以便于测试:https ://github.com/nachocab/examplerefclass

0 投票
1 回答
621 浏览

r - 在 Reference Class 对象中定义非标准类

引用类似乎只接受允许的基本/标准对象类型。例如,我想要一个 chron 对象,但这不允许我定义它:

这是一个限制还是有更好的方法?我尝试在initialize方法中设置它,但显然这也不是要走的路: