2014-12-02 2 views
0

Ниже показано, что я хотел бы:Есть ли makeActiveBinding для подмножеств?

session <- data.frame(period=rep(1:2, each=3), id=rep(1:3,2), x=NA) 
makeActiveBinding("subject", function (x) { 
    session[session$period==period & session$id==id,] 
}, environment()) 

period <- 2 
id <- 1 
subject 
##  period id x 
## 4  2 1 NA 
id <- 2 
subject 
##  period id x 
## 5  2 2 NA 

Fine до сих пор! Но:

subject$x <- "id 2 did sthg" 
subject 
## period id x 
## 5  2 2 NA 

Есть ли способ, чтобы привязать объект Подменит? Возможно, есть что-то очевидное, что мне не хватает ...

ответ

0

tumbleweed!

Подмножество работ путем копирования всего объекта и последующего присвоения ему. В результате, следующее будет работать:

session <- data.frame(period=rep(1:2, each=3), id=rep(1:3,2), x=NA) 
makeActiveBinding("subject", function (x) { 
    if (missing(x)) { 
    session[session$period==period & session$id==id,] 
    } else { 
    session[session$period==period & session$id==id,] <<- x 
    } 
}, environment()) 

Использование глобального оператора присваивания (<<-) имеет важное значение, в противном случае вы назначаете только в среде функции.

Смежные вопросы