====== Reading constraints in R ====== read_Pajek_clu <- function(f,skip=1){ # reads a partition from Pajek's clu file; skip *vertices and comments lines read.table(f,skip=skip,colClasses=c("integer"),header=FALSE)$V1 } read_Pajek_net <- function(f,skip=0){ # reads a network from Pajek's net file; skip comments lines L <- readLines(f) st <- grep("\\*",L) S <- unlist(strsplit(L[st[1]]," ")) n <- as.integer(S[2]); n1 <- st[1]+1; n2 <- st[2]-1 m1 <- st[2]+1; m2 <- length(L); m <- m2-m1+1 Names <- unlist(strsplit(L[n1:n2],'"'))[3*(1:n)-1] R <- vector(mode="list",length=n) S <- unlist(strsplit(L[m1:m2],'[[:space:]]+')) b <- as.integer(S[4*(1:m)-2]); e <- as.integer(S[4*(1:m)-1]) for(k in 1:m){u <- b[k]; v <- e[k]; R[[u]] <- c(R[[u]],v)} names(R) <- Names return(R) } Pajek file should be produced using Pajek export in *arcs or *edges format. Each line contains initial space + 3 numbers. source("C:\\Users\\batagelj\\Documents\\papers\\2018\\CRoNoS\\shape\\pajek.R") netRel <- "C:/Users/batagelj/Documents/papers/2018/CRoNoS/shape/europe/Europe.net" R <- read_Pajek_net(netRel,3) > netRel <- "C:/Users/batagelj/Documents/papers/2018/CRoNoS/shape/europe/EuropeA3.net" > R <- read_Pajek_net(netRel,3) > listRel(R) SJM 1 : 31 53 48 ALB 2 : 15 26 29 56 20 AND 3 : 12 38 AUT 4 : 8 13 17 20 23 36 37 40 BEL 5 : 12 13 25 30 41 BIH 6 : 7 29 35 HRV 7 : 17 29 35 37 20 CZE 8 : 13 32 36 DNK 9 : 13 39 46 EST 10 : 22 53 11 39 FIN 11 : 31 39 53 FRA 12 : 13 20 25 28 38 40 16 21 41 DEU 13 : 25 30 32 40 39 GIB 14 : 38 GRC 15 : 26 45 51 20 54 GGY 16 : 41 21 HUN 17 : 35 36 37 50 52 IRL 18 : 41 48 19 IMN 19 : 41 ITA 20 : 34 37 40 55 27 38 29 JEY 21 : 41 LVA 22 : 24 44 53 39 LIE 23 : 40 LTU 24 : 32 44 53 39 LUX 25 : MKD 26 : 35 45 56 MLT 27 : MCO 28 : MNE 29 : 35 56 NLD 30 : NOR 31 : 39 53 48 46 POL 32 : 36 44 52 53 39 PRT 33 : 38 SMR 34 : SRB 35 : 45 50 56 SVK 36 : 52 SVN 37 : ESP 38 : SWE 39 : 53 CHE 40 : GBR 41 : 48 46 ARM 42 : 43 47 51 AZE 43 : 47 51 53 BLR 44 : 52 53 BGR 45 : 50 51 FRO 46 : 48 GEO 47 : 51 53 ISL 48 : MDA 49 : 50 52 ROU 50 : 52 TUR 51 : 54 UKR 52 : 53 RUS 53 : CYP 54 : VAT 55 : XKX 56 : > Ro <- R > Ri <- vector("list",length(R)) > names(Ri)<-names(R) > for(i in 1:length(R)) for(j in R[[i]]) Ri[[j]] <- union(Ri[[j]],i) > sRi <- Ri; sRo <- Ro \\ ====== ====== [[notes:da:euana|Back to European data analysis]]