【发布时间】:2020-07-07 17:48:22
【问题描述】:
我有一个 R6 类 BarContainer,其中包含一个向量 Bar,其中 Bar 是另一个 R6 类。我想在BarContainer 中实现一个方法subset,它将Bar 的向量子集以匹配作为参数给出的表达式。
Bar = R6::R6Class(
### Class name
"Bar",
### Public members
public = list(
### Attributes
a = -1,
b = -1,
c = -1,
### Initialize
initialize = function(A, B, C)
{
self$a = A
self$b = B
self$c = C
}
)
)
BarContainer = R6::R6Class(
### Class name
"BarContainer",
### Public members
public = list(
### Attributes
self$bars = c(),
### Initialize
initialize = function(input)
{
bars = input
}#,
### Subset
subset = function(expr)
{
# ??? self[eval(parse(text=expr))] ???
}
)
)
这是subset的一个可能用例
mySubsettedContainer = myContainer$subset(a == 3 && (b > 0 || c > 0) )
如何实现?任何其他解决方案(最终使用多个表达式或其他)来实现这个subset 方法?
请注意,Bar 有一大堆有用的方法,这种 oop 方法真的很干净。我想避免将我的Bar 对象保留为data.frame 的行(例如bars = data.frame(a = .., b = .., c = ..)),即使它会使BarContainer 中subset 方法的实现更容易。
【问题讨论】:
标签: r expression subset r6