问题标签 [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.
r - setRefClass 按值传递,按引用传递
我怀疑我不了解setRefClass
R 中的所有方面。假设我有一个setRefClass
初始化的实例。我想创建变量X
,以便该变量等于实例的副本或引用setRefClass
. 有没有区别:
和
我不完全理解,我的代码似乎有奇怪的行为。
谢谢你的帮助
r - R中的错误消息:“方法()的参数必须命名,或者一个命名列表”
我是在 R 中创建类和方法的新手,并且遇到了一个我没有找到太多文档的问题。我创建了一个类“DataImport”,并尝试添加以下方法:
当我运行此代码时,我收到以下错误:
我可以直接在这个方法之前添加一个方法,它工作得很好,但是这个没有。我不太明白为什么会这样或如何解决它。
r - 是否可以创建引用类来记录调用
我有一个关于参考类的问题。我的问题是在我正在开发rCharts的 R 包的上下文中。它使用参考类从 R 创建交互式绘图。
创建情节涉及一系列调用。这是一个示例,首先创建散点图,然后添加线图。
现在,由于引用类就像一个闭包,我想知道是否可以记录所做的调用。这个想法是,如果我可以记录调用的顺序,那么我可以自动插入用于创建可视化的源代码以及 html。
我试图看看我是否可以使用sys.function
or match.call
,但没有得到任何地方。如果有人能指出我如何解决这个问题,将不胜感激。
r - 动态生成引用类
我试图在 R 包中动态生成引用类,事实证明这相当困难。以下是我采用的方法和遇到的问题:
我正在创建一个包,希望能够在其中动态读取模式并自动生成关联的引用类(想想 SOAP)。当然,这意味着我将无法在包源中预先定义我的参考类。
我最初尝试使用一个简单的方法创建一个新类:
当然,在交互执行时可以正常工作,但是当包含在包源中时,我得到一个locked binding
错误。从我的阅读来看,发生这种情况是因为在交互运行时,类信息存储在未锁定的全局环境中,而我的包的基本环境被锁定。
然后我发现了一个线程,它建议使用一些东西来达到以下效果:
当我尝试构建包时,这实际上使 R/Studio 崩溃,所以很遗憾,我没有它生成的错误的日志,但它肯定没有工作。
接下来我尝试在我的包中创建一个新环境,我可以使用它来存储这些引用类。所以我.classEnv <- new.env()
在我的包源中添加了一行(不在任何函数内部),然后在创建新的引用类时尝试使用这个类:
这实际上似乎工作正常,但会产生以下警告:
那么,由于某种原因,methods::getPackageName()
无法确定我的新环境在哪个包中?
有没有办法以不同的方式创建我的新环境,以便getPackageName()
正确识别包?我可以添加一些功能来帮助getPackageName()
检测包裹吗?如果我可以处理警告,这甚至会起作用,还是我通过尝试动态创建引用类来滥用引用类?
r - 使用参考类作为因子的水平
有没有人有使用参考类作为因素水平的经验?这是我在我的一个data.frame
包中添加“类外键”支持的目标的一步。
我最终希望创建一个data.frame
可以将与因子关联的代码作为整数存储的方法,但该因子的级别实际上是参考类对象,而不是通常使用的字符向量因子。我已经能够找到一些关于使用 S4 对象作为因子级别的信息,但这些技术似乎不适用于参考类。
例如,一个简单的:
似乎没有任何工作。看起来,在我最好的情况下,我可以到达factor()
分析exclude
参数的行:
此时一切都崩溃了,因为我不允许创建“S4”类型的向量。
任何关于如何解决这个问题的想法,或者 - 甚至更好 - 以data.frame
友好的方式将整数映射到引用类对象的替代方法将不胜感激!
编辑:针对@Aaron 的以下问题:
这里的简单解决方案是将整数存储在中data.frame
,然后维护一个单独的列表/data.frame
负责将这些 ID 映射到其他一些数据(例如引用类对象)。这将保留完成我需要的所有必要数据,但对我来说不太优雅,原因如下:
- 我正在设想一种解决方案,它允许我打印出引用类对象本身的某些部分,而不是 ID。例如,如果我将员工 ID(整数)映射到“员工”类,我希望
data.frame
打印员工的姓名,而不是他们的 ID。 - 我希望能够直接从
data.frame
. 以同样的方式,as.character(myDataFrame$someColumn)
这会给我该列的标签(假设它是一个因素),而不是实际存储在data.frame
.
同样,如果有更好的方法来解决这个问题,我非常愿意接受这个问题的替代解决方案!
r - 从 ReferenceClass 方法返回 data.table 的副本
我尝试data.table
从 ReferenceClass 的方法返回 s 的副本:
但是,调用dummy$getTab()
会产生一个我不明白的错误:
我不知道它是什么意思以及它来自哪里。另外,以下两个程序可以正常工作:
任何帮助表示赞赏。
r - 如何使用引用类在 R 中的父类中设置字段?
我正在尝试params
在 Template 类中设置字段并对其进行验证,所以我可以这样做TemplateClass$new(params)
并且它会自动验证,但出现错误:
编辑:我似乎已经通过将类中的initialize
方法更改为. 但我不明白为什么需要这样做。Template
initialize = function(params = NULL){}
另外,我看到其他人callSuper()
在该类不包含任何超类时使用。这是什么原因?
r - 在 GUI 中使用 R 引用类将值从一个窗口传递到另一个窗口
我正在使用 gWidgets 在 R 中制作 GUI。到目前为止,我一直在通过全局环境将值从一个窗口传递到另一个窗口。使用全局环境实现起来很简单,但并不理想。一个问题是R CMD check
抱怨缺少全局变量的可见绑定。
作为这个问题的解决方案,一些 R 程序员已经提到了引用类。但是要理解引用类在这种情况下是如何工作的,举一个简单的例子真的很有帮助。
让我给一个愚蠢的 GUI 来使用。当用户点击第一个窗口的按钮时,它会将模型m
置于全局环境中。第二个按钮m
从全局环境中获取并给出输出。当您再次点击第一个按钮时,它将创建一个新模型m
并更改第二个按钮的输出。如果关闭第一个窗口,第二个窗口中的按钮仍然可以工作,因为m
是在全局环境中。
在此示例中如何使用引用类?
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
r - 在 Reference Class 对象中定义非标准类
引用类似乎只接受允许的基本/标准对象类型。例如,我想要一个 chron 对象,但这不允许我定义它:
这是一个限制还是有更好的方法?我尝试在initialize
方法中设置它,但显然这也不是要走的路: