2015-06-19 45 views
5

nie mogę dość dowiedzieć się, jak wykonać następujące czynności w jednym wierszu:Format lm R w() Formuła z Transformacji

data(attenu) 
x_temp = attenu$accel^(1/4) 
y_temp = log(attenu$dist) 
best_line = lm(y_temp ~ x_temp) 

Ponieważ powyższych prac, pomyślałem mogłem wykonać następujące czynności:

data(attenu) 
best_line = lm(log(attenu$dist) ~ (attenu$accel^(1/4))) 

Ale to daje błąd:

Error in terms.formula(formula, data = data) : invalid power in formula 

jest oczywiście coś mi brakuje gdy korzystając przekształcone vari ables w formacie formuły R. Dlaczego to nie działa?

+1

Na przyszłość, można również użyć 'lm (log (gmina) ~ I (Accel^(1/4)), data = attenu)' aby uniknąć konieczności wykonywania 'zestaw danych $ varname' za każdym razem . – thelatemail

Odpowiedz

11

Szukasz funkcji I, aby operator ^ był traktowany jako arytmetyczny w formule, tj.

x <- runif(1:100) 
y <- x + rnorm(100,0, 3) 
lm(log(y) ~ I(x^(1/4)) 
+2

Dziękujemy! Nauczyłem się dzisiaj czegoś nowego. – nfmcclure