簡體   English   中英

igraph-將節點向量轉換為R中所有可能邊的數據幀

[英]igraph - convert vector of nodes into dataframe of all possible edges in R

我正在R中處理網絡圖,需要做一個簡單的數據操作。 我有一個看起來像這樣的節點的數據框:

dput(mynodes)
structure(list(id = c("s1", "s2", "s3", "s4", "s5", "s6", "s7", 
"s8"), name = c("Jim", "Mike", "Bob", "Joe", "John", "Rob", "Kyle", 
"Chad")), .Names = c("id", "name"), row.names = c(NA, 
-8L), class = "data.frame")

mynodes
  id name
1 s1  Jim
2 s2 Mike
3 s3  Bob
4 s4  Joe
5 s5 John
6 s6  Rob
7 s7 Kyle
8 s8 Chad

我想為這些節點之間所有可能的邊緣組合初始化一個數據框。 然后,我需要的輸出是一個如下所示的數據框:

   from   to
 1   s1   s2
 2   s1   s3 
 3   s1   s4 
 4   s1   s5 
 5   s1   s6
 6   s1   s7
 7   s1   s8 
 8   s2   s1
 9   s2   s3
10   s2   s4
... ... ... 

依此類推,一直到mynodes的ID唯一配對。 有沒有一種簡單的方法可以執行此操作,可能使用igraph包(因為我將使用igraph中的graph_from_data_frame函數創建一個網絡)。

任何幫助表示贊賞,謝謝!

如果您想節省幾行

df <- structure(list(id = c("s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8"), name = c("Jim", "Mike", "Bob", "Joe", "John", "Rob", "Kyle", "Chad")), .Names = c("id", "name"), row.names = c(NA, -8L), class = "data.frame")


result <- as.data.frame(t(combn(df$id,2)))
colnames(result) <- c('from','to')

我會在這里快速回答自己的問題,因為我自己知道了:

data.frame(from = rep(mynodes $id, each = length(mynodes $id)),
           to = rep(mynodes $id, times = length(mynodes $id)), 
           stringsAsFactors = FALSE) %>%
filter(to != from)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM