2015-04-10 15 views
7

mam ramkę danych i wzór przechowywane w zmiennych:usunąć zmiennej z RHS od wzoru, który ma punkt

> d <- data.frame(cls=1, foo=2, bar=3) 
> f <- formula(cls ~ .) 

ja chce usunąć jedną zmienną z RHS tego wzoru programowo (In mój kod, nazwa tej zmiennej zostanie przekazana gdzieś jako ciąg). Próbowałem za pomocą update.formula:

> update(f, .~.-foo)  
Error in terms.formula(tmp, simplify = TRUE) : 
    '.' in formula and no 'data' argument 

Potem próbowałem zapewniając data argument:

> update(f, .~.-foo, data=d) 
Error in terms.formula(tmp, simplify = TRUE) : 
    '.' in formula and no 'data' argument 

wiem wyżej będzie działać jeśli początkowa formuła nie mają kropki po prawej stronie:

> f <- formula(cls ~ foo + bar) 
> update(f, .~.-foo) 
cls ~ bar 

Jak usunąć zmienną z RHS wzoru, jeśli nie mogę zagwarantować, że RHS nie zawiera kropki?

+1

działa to w kontekście 'lm()'. Jestem zaskoczony, że tu nie działa. –

Odpowiedz

5
update(terms(f, data = d), . ~ . - foo) 
# cls ~ bar 
Powiązane problemy