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

Code: Alles auswählen

 daten <- as.numeric(daten)
bzw

Code: Alles auswählen

daten <- as.double(daten)
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

Code: Alles auswählen

net2 <-graph_from_incidence_matrix(L)
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