2015-03-07 9 views
6

Po uruchomieniu m1 <- lm(f1, data=DT) chcę zapisać obserwacje, które są zawarte (w rodzaju "obs < - complete.cases (m1)", ale coś, co działa), więc że mogę uruchomić drugą regresję na tych samych obserwacjach: m2 <- lm(f2, data=DT[obs]).R: Wyodrębnij pełne przypadki/uwzględnione obserwacje z modelu liniowego lub zmiennych formuły

Alternatywnie, chciałbym uzyskać obserwacje, które są kompletne dla danego zbioru zmiennych zdefiniowanego przez obiekt formuły. Rozważmy ten pseudokod podobny do R:

f1 <- as.formula("y ~ x1 + x2 + x3") 
f2 <- as.formula("y ~ x1 + x2") 
obs <- complete.cases(DT[,list(all.vars(f1)]) 
m2 <- lm(f2, data=DT[obs]) 

Jak to zrobić? W pierwszym przypadku, lm już wykonuje pracę pośrednio; jak mogę to wydobyć? W drugim, all.vars zwraca wektor znaków; w jaki sposób poprawnie utworzyć niecytowaną listę, którą zrozumie DT (data.table)?

+1

'obs <- complete.cases (DT [C (all.vars (F1)), z = FAŁSZ])' –

+0

ten odpowiedzi na pytanie. Nawiasem mówiąc, 'obs <- complete.cases (DT [, all.vars (f1), with = FALSE]) również działa, ponieważ' all.vars' zwraca wektor znaków. Spróbowałem flagi 'with' (' list (f1), with = TRUE'), ale to nie działa. – rjturn

+0

Ponieważ 'list' wykonuje niestandardową ocenę w środowisku' data.table', co oznacza, że ​​otrzymuje niecytowane nazwy zmiennych. –

Odpowiedz

4

Od data.table v1.9.5, na.omit ma argument cols.

na.omit(DT, cols = all.vars(f)) 
+0

Tak, myślę, że to również odpowiada na moje pytanie, chociaż tego nie przetestowałem. Wygląda też na czystsze. Dzięki Arun. – rjturn

0

Zakładając, że na.action twojego lm() jest domyślnym na.omit, dlaczego nie zadzwonić na.omit na oryginalne dane?

Sprawdź plik pomocy dla na.omit w poszukiwaniu alternatyw.

+0

Dziękuję za odpowiedź, ale to nie odpowiada na moje pytanie. 'na.omit (data [subset])' jest równoważne 'data [complete.cases (data [subset])]' i jest prawdopodobnie bardziej zwięzłe, ale problem polega na tworzeniu podzbioru na podstawie formuł (lub wektorów znaków przez ' all.vars (f) '). – rjturn

Powiązane problemy