25 votes

Erreur R dans unique.default(x) unique() ne s'applique qu'aux vecteurs

J'ai créé un ensemble de données nommé state à partir de la matrice intégrée state.x77 avec deux variables continues (population et revenu) et deux variables factorielles (région et zone).

J'ai calculé le revenu moyen par région en utilisant tapply() , by() , aggregate() y ave() pour voir le format de l'objet retourné.

Mais l'appel à ave() donne l'erreur

Erreur dans unique.default(x) : unique() ne s'applique qu'aux vecteurs

Le code est :

## 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

Pourquoi l'erreur se produit-elle ? Comment puis-je l'éviter ?

32voto

flodel Points 41487

C'est une erreur très courante, vous devez utiliser l'argument nommé FUN :

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

sinon mean sera interprété comme une autre variable de regroupement (faisant partie de l'élément ... argument pour ave .)

0voto

Jimmy Li Points 1

Vous pouvez vérifier si le R utilise la fonction correcte, j'ai essayé de spécifier la fonction comme dans l'exemple ci-dessous. enrichplot::dotplot(kegg) Cela peut vous aider. ps.je suis un débutant de R script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X