2017-06-11 14 views
1

Utilisation d'une trame de données d'entrée unclustered (fci), un APResult est créé à partir apcluster() as epxected:APCluster Erreur dans as.vector (données): aucune méthode pour contraindre cette classe S4 à un vecteur

> apclr2q02 <- apcluster(negDistMat(r=2), fci) 
> show(apclr2q02) 

APResult object 

Number of samples  = 1045 
Number of iterations = 826 
Input preference  = -22.6498 
Sum of similarities = -1603.52 
Sum of preferences = -1336.338 
Net similarity  = -2939.858 
Number of clusters = 59 

Le documentation en ligne indique que aggExCluster() peut accepter soit des données à regrouper en entrée, soit un résultat de cluster précédent (ExClust ou APResult). Exécution aggExCluster sur les données (clusterisés de fci), le code fonctionne comme prévu:

> aglomr2 <- aggExCluster(negDistMat(r=2), fci) 
> aglomr2 

AggExResult object 

Number of samples   = 1045 
Maximum number of clusters = 1045 

Le résultat peut être tracée au format dendograme et tout va bien; Cependant, en utilisant la APResult obtenue ci-dessus (apclr2q02) en entrée, l'erreur suivante est renvoyée:

> aglomr2 <- aggExCluster(negDistMat(r=2), apclr2q02) 
Error in as.vector(data) : 
    no method for coercing this S4 class to a vector 

Toutes les suggestions sur ce que je pourrais faire mal avec l'objet APResult comme entrée?

Répondre

0

Si vous souhaitez utiliser aggExCluster() sur un résultat de regroupement précédent donné comme un objet « ExClust » ou « APResult », ces objets doivent être transmis comme argument « x » et, en outre, la matrice de similarité doit être disponible. Voici un extrait de code autonome sur la base de votre exemple (notez que l'objet « apres » retour de apcluster() comprend la matrice de similarité):

cl1 <- cbind(rnorm(50,0.2,0.05),rnorm(50,0.8,0.06)) 
cl2 <- cbind(rnorm(50,0.7,0.08),rnorm(50,0.3,0.05)) 
x <- rbind(cl1,cl2) 

apres <- apcluster(negDistMat(r=2), x, q=0.7) 
aggExCluster(x=apres) 

Dans le cas où vous commencez à partir d'une matrice de similarité, vous pouvez soit l'inclure dans l'objet « APResult », à savoir

sim <- negDistMat(r=2, x) 
apres <- apcluster(sim, q=0.7, includeSim=TRUE) 
aggExCluster(x=apres) 

(si apcluster() est appelée sur une matrice de similarité, la matrice ne sont pas inclus dans l'objet de résultat par défaut, qui peut être remplacé par la lettre « includeSim=TRUE »)

Vous pouvez également spécifier la matrice de similarité via l'argument « s « :

sim <- negDistMat(r=2, x) 
apres <- apcluster(sim, q=0.7) 
aggExCluster(x=apres, s=sim) 

Appel aggExCluster() avec une fonction de similarité et un objet » APResult » ne fonctionnera pas parce que le « APResult » ne comprend pas l'original données, donc aggExCluster() est incapable de calculer la matrice de similarité qui est nécessaire pour la mise en grappe. A la place, si aggExCluster() est appelé avec l'argument 's' étant une fonction de similarité, il s'attend à ce que l'argument 'x' contienne les données brutes et essayera donc de le convertir en un objet sous-jacent. C'est pourquoi vous obtenez ce message d'erreur.

+0

Ausgezeichnet, vielen Dank! (Excellent, merci beaucoup!) Cela a également fonctionné avec mes données. – Dennis