いくつかの助けを借りて、エッジリスト、別名隣接リストを隣接行列に変換する方法を見つけました。 多数のエッジリストに対してこれを自動化し、結果の隣接行列をリストに入れる方法を学びたいです。
plyr がこれを行うための最良の方法だと思いますが、ループで行う方法を教えてほしい場合は、それにも感謝します。興味深いことに、データはさまざまな学校のソーシャル ネットワークを表しています。
ここに私がこれまでに持っているものがあります:
# extract one school edgelist from the dataframe
aSchool <- myDF[which(myDF$school==1), c("school", "id", "x1","x2","x3","x4","x5","x6","x7","x8","x9","x10")]
# figure out unique ids
edgeColumns <- c("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10")
ids <- unique(unlist(aSchool[edgeColumns]))
ids <- ids[!is.na(ids)]
# make an empty matrix
m <- matrix(0,nrow=length(ids),ncol=length(ids))
rownames(m) <- colnames(m) <- as.character(ids)
# fill in the matrix
for(col in edgeColumns){
theseEdges <- aSchool[c("id",col)]
theseEdges <- na.omit(theseEdges)
theseEdges <- apply(theseEdges,1,as.character)
theseEdges <- t(theseEdges)
m[theseEdges] <- m[theseEdges] + 1
}
for(i in 1:nrow(m)) m[i,i] <- 0