igraph를 사용하여 공동 저자 네트워크를 만들고 싶습니다.공동 작성자 네트워크 만들기
Vertex1 Vertex2
A B
D C
C F
C F
A C
D E
C D
B C
C E
F D
할 어쨌든 거기 :
DF1 <- cbind(Papers = paste('Paper', 1:5, sep = ''),
Author1 = c('A', 'D', 'C', 'C', 'C'),
Author2 = c('B', 'C', 'F', NA, 'F'),
Author3 = c('C', 'E', NA, NA, 'D'))
내가 다음과 같습니다 에지 목록을 작성하고 싶습니다 :
내 데이터처럼 보이는 data.frame으로 구성됩니다 (예 : igraph)
다음 기능은 트릭을 수행하지만 큰 데이터 세트 (5,000 매 이상)의 경우 실행하는 데 너무 오래 걸린다
Fun_DFtoEdgeList <- function (Inputdataframe)
{
## This function create an edge list to create a network
## Input : Dataframe with UNIQUE VALUES !!!!
ResEdgeList <- data.frame(Vertex1 = c('--'), Vertex2 = c('--'))
for (i in 1 : (ncol(Inputdataframe)-1))
{
for (j in 2: (ncol(Inputdataframe)))
{
if (i !=j)
{
#print(paste(i, j, sep ='--'))
ToAppend <- data.frame(cbind(Inputdataframe[,i], Inputdataframe[,j]))
names(ToAppend) <- names(ResEdgeList)
#print(ToAppend)
ResEdgeList <- rbind(ResEdgeList, ToAppend)
}
}
}
ResEdgeList <- data.frame(ResEdgeList[-1,], stringsAsFactors = FALSE)
ResEdgeList<- subset(ResEdgeList, (is.na(Vertex1) == FALSE) & (is.na(Vertex2) == FALSE))
ResEdgeList
}
Fun_DFtoEdgeList (DF1[,-1])
`` 도움을 주시면 감사하겠습니다. (이전에 다른 제목 아래에이 질문을 게시했지만 충분히 명확하지 않다고 말합니다.)
고마운. 정확히 내가 필요로했던 것 – user1043144