Seite 3 von 4
Re: Matrix aus Tabellenzeile erstellen
Verfasst: Mo Apr 01, 2019 8:41 am
von jogo
Hallo Hanna,
kannst Du bitte trotzdem den nicht funktionierenden Code zeigen und erläutern, was Du erreichen möchtest?
Welchen Algorithmus versuchst Du umzusetzen? Wie soll das Ergebnis aussehen?
Hanna hat geschrieben: ↑Sa Mär 30, 2019 3:52 pm
ich habe eine neue Herausforderung. Und zwar benötige ich nun ein igraph Objekt, um dort damit die "harmonic closeness" zu berechnen. Leider scheitere ich an der Erzeugung des Objektes. Meine Datenbasis ist noch die gleiche, die ich zum Download bereit gestellt habe. Ich probierte schon einiges, aber entweder passt es an sich nicht oder ich konnte die Daten nicht in double umwandeln (was laut Fehlermeldung aber gefordert ist).
Gruß, Jörg
Re: Matrix aus Tabellenzeile erstellen
Verfasst: Fr Apr 05, 2019 11:22 am
von Hanna
Hallo Jörg,
anbei mein Code-Fragment
Code: Alles auswählen
library("sna")
library("keyplayer")
library("CINNA")
library("igraph")
daten <- read.table("~Pfad", sep=",")
daten <- as.matrix(daten)
H <- harmonic_centrality(daten, vids = V(x), mode = c("out"),weights = NULL)
Ziel ist, dass ich die harmonic_centrality (cas CINNA) berechnen kann, dafür ist aber ein igraph-Format notwendig und das zu erzeugen will nicht klappen...
Viele Grüße,
Hanna
Re: Matrix aus Tabellenzeile erstellen
Verfasst: Fr Apr 05, 2019 1:11 pm
von jogo
Hallo Hanna,
schau Dir die Funktionen im Paket igraph an. Dort müsste es Funktionen geben, die verschiedene Datenstrukturen in ein igraph-Objekt umwandeln können (dabei wird die jeweilige Datenstruktur genommen und als Definition eines Graphen interpretiert).
Da ich Deine Datenstruktur nicht kenne, kann ich nicht wissen, welche dieser Funktionen Du nehmen musst.
Gruß, Jörg
Re: Matrix aus Tabellenzeile erstellen
Verfasst: Fr Apr 05, 2019 2:40 pm
von Hanna
Hallo Jörg,
ich habe nochmal weitergemacht,
Code: Alles auswählen
daten <- read.table("~pfad, sep=",")
daten <- as.matrix(daten)
L <-lapply(1:nrow(daten), function(i) matrix(daten[i,], 4, byrow=TRUE))
net2 <-graph_from_incidence_matrix(L)
bekomme dann aber die Fehlermeldung:
Fehler in snaAuswertung2() :
(list) Objekt kann nicht nach 'double' umgewandelt werden
Auch mit
bzw
komme ich nicht weiter.
Meine Datenstruktur ist die, die im Dateianhang unter
download/file.php?id=434 zu finden ist.
Vielen Dank und Grüße,
Hanna
Re: Matrix aus Tabellenzeile erstellen
Verfasst: Fr Apr 05, 2019 4:12 pm
von jogo
Hallo Hanna,
ich bekomme ein igraph-Objekt wie folgt:
Code: Alles auswählen
library("igraph")
daten <- read.table("http://forum.r-statistik.de/download/file.php?id=434", sep=",")
G <- graph_from_incidence_matrix(as.matrix(daten))
str(G)
class(G)
Es geht sogar:
Code: Alles auswählen
library("igraph")
daten <- read.table("http://forum.r-statistik.de/download/file.php?id=434", sep=",")
G <- graph_from_incidence_matrix(daten)
str(G)
class(G)
weil, die Funktion graph_from_incidence_matrix() das erste Argument in eine Matrix umwandelt (wenn möglich).
Gruß, Jörg
Re: Matrix aus Tabellenzeile erstellen
Verfasst: So Apr 07, 2019 3:06 pm
von Hanna
Hallo Jörg,
einen Fehler gibt es nicht, aber meine Daten werden falsch interpretiert. In meinen Testdaten stehen 3x3-Matrizen drin, ich denke, dass es so als eine Matrix interpretiert wird.
Ich hatte das mit
Code: Alles auswählen
L <-lapply(1:nrow(daten), function(i) matrix(daten[i,], 3, byrow=TRUE))
probiert, wenn ich das dann aber mit
weiterbearbeite, bekomme ich den Fehler, dass es nicht in double umwandelbar ist. Hast du da noch einen Rat?
Vielen Dank und sonnige Grüße,
Hanna
Re: Matrix aus Tabellenzeile erstellen
Verfasst: So Apr 07, 2019 4:47 pm
von jogo
Hallo Hanna,
wie schaut es mit
Code: Alles auswählen
library("igraph")
daten <- read.table("http://forum.r-statistik.de/download/file.php?id=434", sep=",")
apply(daten, 1, function(r) graph_from_incidence_matrix(matrix(r, 3, byrow=TRUE)))
aus?
Du bekommst dann eine Liste mit 6 Elementen, jedes Element ist ein igraph-Objekt.
Gruß, Jörg
Re: Matrix aus Tabellenzeile erstellen
Verfasst: So Apr 14, 2019 2:46 pm
von Hanna
Hallo Jörg,
nach eine Kindergeburtstagswoche komme ich erst heute wieder dazu, mich mit meiner Auswertung zu beschäftigen...
Die Werte kriege ich raus, aber die Funktion ist trotzdem noch mit dem Input unzufrieden
Code: Alles auswählen
daten <- read.table("http://forum.r-statistik.de/download/file.php?id=434", sep=",")
G <- apply(daten, 1, function(r) graph_from_incidence_matrix(matrix(r, 3, byrow=TRUE)))
H <- harmonic_centrality(G, vids = V(G), mode = c("out"),weights = NULL)
Wo mache ich den Fehler?
Viele Grüße, Hanna
Re: Matrix aus Tabellenzeile erstellen
Verfasst: So Apr 14, 2019 4:00 pm
von jogo
Hallo Hanna,
aus welchem Paket ist die Funktion
harmonic_centrality()
ok, aus dem Paket CINNA
Dort steht im Hilfetext:
Code: Alles auswählen
Usage
harmonic_centrality(x, vids = V(x), mode = c("all", "out", "in"),
weights = NULL)
Arguments
x An igraph or a network object
vids Nodes to be considered in the calculation
Du übergibst in Deinem Code eine Liste von igraph-Objekten an die Funktion.
Die Funktion möchte im Parameter x= aber nur einen einzelnen igraph.
Möchtest Du vielleicht:
Code: Alles auswählen
H <- lapply(G, function(g) harmonic_centrality(g, vids=V(g), mode="out"))
Gruß, Jörg
Re: Matrix aus Tabellenzeile erstellen
Verfasst: Mi Apr 17, 2019 5:55 pm
von Hanna
Ich glaube, das ist es! Danke dir vielmals, Jörg!!
Sonnige Grüße,
Hanna