2017-12-14 13 views
0

Ich arbeite an einer sozialen Netzwerkanalyse Aufgabe, wo ich ein Netzwerk von einer Matrix erstellen muss. Ich versuche eine Matrix zu erstellen, die zeigt, welche Schüler durch Klassen verbunden sind, die sie gemeinsam haben oder nicht (eine Person-Person-Matrix). Ich habe die ursprünglichen Daten in die erste Iteration einer Matrix gerastert und möchte nun die Matrix multiplizieren. Meine Daten-Set und aktuelle Matrix ist eine größere Version des unter:R Fehlermeldung bei Verwendung von t()% *% "erfordert numerische/komplexe Matrix/Vektor Argumente"

names <- c("Tom", "Dick", "And", "Harry") 
class <- c("cs1", "cs2", "cs3", "cs1") 
count <- c(1, 1, 0, 1) 
df = data.frame (names, class, count) 
df2 <- spread(df, "class", "count") 

Wenn ich den Matrixmultiplikation Code ausführen ich diese Fehlermeldung: Fehler in t (m)% *% m: erfordert numerische/komplexe Matrix/Vektorargumente.

m <- as.matrix(df2) 
m2 <- t(m) %*% m 

Eine vorherige SO Frage und Antwort Matrix multiplication in R: requires numeric/complex matrix/vector arguments die Matrix vorgeschlagen benötigten numerischen oder Faktorwerte enthalten, so habe ich den Code unten, aber ich habe die gleiche Fehlermeldung:

df2 %>% mutate_if(is.factor, as.character) -> df2 
m <- as.matrix(df2) 
m2 <- t(m) %*% m 

Wenn jemand Hilf mir zu verstehen, wo ich falsch liege/was die Fehlermeldung hier bedeutet, ich würde mich freuen. Vielen Dank!

P.S. Sorry für hässlichen Code ... neu R.

Antwort

0

Dies könnte helfen:

# fill NA with 0 
df2[is.na(df2)] <- 0 

# make row names the names of the people 
row.names(df2) <- df2$names 
df2 <- df2[,-1] 

m <- as.matrix(df2) 
m2 <- t(m) %*% m 
+0

Thank you !! Das hat den Trick - keine Fehlermeldung mehr gemacht :) – melonyn

+0

Np. Sie können es markieren, wenn es funktioniert hat. Vielen Dank. – AidanGawronski

Verwandte Themen