2017-06-11 5 views
1

einen unclustered Eingangsdatenrahmen (fci) Verwendung, ein APResult von apcluster erstellt wird() als epxected:APCluster Fehler in as.vector (data): kein Verfahren zum Zwingen dieser Klasse S4 auf einen Vektor

> 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 

Die Online-Version documentation besagt, dass aggExCluster() entweder Daten akzeptieren kann, die als Eingabe gruppiert werden, oder ein vorheriges Clusterergebnis (ExClust oder APResult). Laufen aggExCluster auf den geclusterten Daten (fci), funktioniert der Code wie erwartet:

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

AggExResult object 

Number of samples   = 1045 
Maximum number of clusters = 1045 

Das Ergebnis kann in Dendogramm Format aufgezeichnet werden und alles ist gut; jedoch unter Verwendung des APResult oben (apclr2q02) als Eingabe erhalten wird, wird der folgende Fehler zurückgegeben:

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

Irgendwelche Vorschläge, was könnte ich mit dem APResult Objekt als Eingabe falsch machen werden?

Antwort

0

Wenn Sie aggExCluster() auf einem früheren Clustering Ergebnis gegeben als ‚ExClust‘ oder ‚APResult‘ Objekt verwenden möchten, müssen diese Objekte als Argument übergeben werden ‚x‘ und zusätzlich die Ähnlichkeitsmatrix muss sein verfügbar. Hier ist ein in sich geschlossenes Code-Snippet auf der Grundlage Ihrer Beispiel (beachten Sie, dass das Objekt ‚apres‘ zurückgekehrt aus apcluster() die Ähnlichkeitsmatrix enthält):

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) 

Wenn Sie selbst aus einer Ähnlichkeitsmatrix starten, können Sie entweder schließen sie in dem Objekt ‚APResult‘, dh

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

(wenn apcluster() auf einer Ähnlichkeitsmatrix genannt wird, wird die Matrix im Ergebnis nicht Objekt standardmäßig enthält, die mit ‚includeSim=TRUE‘ außer Kraft gesetzt werden können)

Alternativ können Sie auch die Ähnlichkeitsmatrix über das Argument angeben ‚s‚:

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

Aufruf aggExCluster() mit einer Ähnlichkeitsfunktion und ein‘APResult‘ Objekt wird nicht funktionieren, weil die ‚APResult‘ schließt nicht das Original Daten, so aggExCluster() ist nicht in der Lage, die Ähnlichkeitsmatrix zu berechnen, die für Clustering erforderlich ist. Wenn aggExCluster() mit dem Argument 's' aufgerufen wird, das eine Ähnlichkeitsfunktion ist, erwartet es stattdessen das Argument 'x' die Rohdaten zu enthalten und wird daher versuchen, es in ein Teiltabellenobjekt zu konvertieren. Deshalb erhalten Sie diese Fehlermeldung.

+0

Ausgezeichnet, vielen Dank! (Ausgezeichnet, vielen Dank!) Das hat auch mit meinen Daten funktioniert. – Dennis

Verwandte Themen