2013-05-22 20 views
15

Ho creato un set di dati denominato state dalla matrice incorporata state.x77 con due variabili continue (Popolazione e reddito) e due variabili fattore (regione e area) .Errore R in unique.default (x) unique() si applica solo ai vettori

ho calcolato dire reddito regione utilizzando tapply(), by(), aggregate() e ave() per vedere il formato dell'oggetto restituito.

Ma la chiamata a ave() sta dando l'errore

Error in unique.default (x): unico() si applica solo ai vettori

Il codice è:

## Mean income by region 
tapply(state$inc, state$region, mean) 
# Northeast   South North Central   West 
# 4570.222  4011.938  4611.083  4702.615 

by(state$inc, state$region, mean) 
# state$region: Northeast 
# 
# [1] 4570.222 
# [...] 

aggregate(state$inc, list(state$region), mean) 
# 
#   Group.1  x 
# 1  Northeast 4570.222 
# 2   South 4011.938 
# 3 North Central 4611.083 
# 4   West 4702.615 

ave(state$inc, state$region, mean) 
# Error in unique.default(x) : unique() applies only to vectors 

Perché si verifica l'errore? Come posso impedirlo?

risposta

16

Questo è un errore molto comune, è necessario utilizzare il nome argomento FUN: (. Parte del ... argomento per ave)

ave(state$inc, state$region, FUN = mean) 

altrimenti mean sarà interpretato come un altro variabile di raggruppamento

+0

Grazie tu molto. l'errore è stato prevenuto. Ma non ho usato FUN nel comando tapply(), by(), aggregate(). allora perché quelli non si sono verificati errore? – time

+2

È perché all'interno della sinossi di 'ave' (elenco di argomenti),' FUN' viene ** dopo ** '...' quindi se non lo passi in modo specifico con 'FUN =', allora R penserà che è parte dell'argomento '...' e usa il valore predefinito ('mean') per' FUN'. – flodel

+0

Grazie, grazie, molte grazie. Sono un principiante in r. potresti darmi qualche consiglio in modo da poter migliorare le mie conoscenze in r? – time

Problemi correlati