2015-06-19 24 views
5

Non riesco a capire come effettuare le seguenti operazioni in una sola riga:Formato di lm di R() Formula con una Trasformazione

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

Dal momento che i lavori di cui sopra, ho pensato che avrei potuto fare quanto segue:

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

Ma questo dà l'errore:

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

C'è ovviamente qualcosa che mi manca quando si usa trasformato vari abilita nel formato formula R. Perché non funziona?

+1

Per riferimento futuro, è anche possibile utilizzare 'lm (log (dist) ~ I (Accel^(1/4)), i dati = attenu)' per evitare di dover fare 'dataset $ varname' ogni volta . – thelatemail

risposta

11

Si sta cercando la funzione I in modo che l'operatore ^ venga trattato come aritmetico nella formula, ad es.

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

Grazie! Ho imparato qualcosa di nuovo oggi. – nfmcclure