Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to calculate adjacency matrices in R

Tags:

r

matrix

I have this data. I want to calculate Adjacency matrices in R.

How can I do this? V1,V2,V3 are columns.V1 and V2 are NODES, and W3 are weight from V1 to V2. Direction in this data is important. After calculating the Adjacency matrices, I want to calculate shortest path between these vertices with R language.

How can I do this?

      V1      V2     V3
[1] 164885   431072   3
[2] 164885   164885   24
[3] 431072   431072   5
like image 919
sahar Avatar asked Feb 13 '13 09:02

sahar


1 Answers

Here is a simpler solution that does not need reshape(). We just create an igraph graph directly from the data frame you have. If you really need the adjacency matrix, you can still get it via get.adjacency():

library(igraph)

## load data
df <- read.table(header=T, stringsAsFactors=F, text=
                 "     V1      V2    V3
                   164885   431072    3
                   164885   164885   24
                   431072   431072    5")

## create graph
colnames(df) <- c("from", "to", "weight")
g <- graph.data.frame(df)
g
# IGRAPH DNW- 2 3 -- 
# + attr: name (v/c), weight (e/n)

## get shortest path lengths
shortest.paths(g, mode="out")
#        164885 431072
# 164885      0      3
# 431072    Inf      0

## get the actual shortest path
get.shortest.paths(g, from="164885", to="431072")
# [[1]]
# [1] 1 2
like image 65
Gabor Csardi Avatar answered Oct 14 '22 02:10

Gabor Csardi