2017-05-08 3 views
-1

J'essaie d'analyser un réseau bipartite en utilisant le paquet bipartite R. J'ai importé un fichier csv et l'ai converti en un réseau en mode un. Voici mon code:Erreur de réseau bipartite

library(igraph) 
library(bipartite) 
g <- as.network(data) 
net <- as.one.mode(g, fill = 0, project="full", weighted=TRUE) 
summary(net) 
vcount(net) 
ecount(net) 

Mais, lorsque je tente de calculer les données de réseau en utilisant la commande suivante, il me donne une erreur.

betweenness_w(net, directed=NULL, alpha=1) 

Voici le message d'erreur.

Error in if (NC == 2) net <- data.frame(tmp[, 1], tmp[, 2]) : 
    argument is of length zero 

J'apprécie l'aide

+2

Il serait plus facile de vous aider si vous fournissiez un [exemple reproductible] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) avec des exemples de données d'entrée – MrFlick

Répondre

0

Vous pourriez être source de confusion igraph objets graphiques avec des matrices.

Par exemple, je peux reproduire votre erreur en introduisant un objet graphique à la fonction betweeness_w:

> g=make_full_graph(5) 
> ecount(g) 
[1] 10 
> betweenness_w(g) 
Error in if (NC == 2) net <- data.frame(tmp[, 1], tmp[, 2]) : 
    argument is of length zero 

Mais betweenness_w veut une liste de bord pondéré. Voir la documentation

Bien sûr, c'est une spéculation parce que vous ne nous avez pas donné un exemple reproductible.

+0

Merci beaucoup. C'est très utile. Pourriez-vous me dire comment créer un edgelist pondéré à partir d'un fichier csv qui a deux colonnes (représentant les deux types de nœuds)? – Chamil

+0

vous devriez éditer votre question pour clarifier ce que vous essayez de faire, et inclure un échantillon de votre fichier CSV et d'autres données. Si vous ne pouvez pas éditer cette question, commencez une nouvelle. – Spacedman