将列表转换为边缘列表的通用方法

时间:2015-02-05 16:24:56

标签: r data-manipulation sna

我们说我有一个字符串列表:

list <- c("john", "carl", "suzanne")

因为它们出现在同一个列表中,所以我做了一个社交网络假设他们是连接的。为了能够将此组转换为图表,我需要将其转换为边缘列表:

from to
john carl
carl suzanne
suzanne john

但是,该组可能包含1到无穷大的字符串数。如何构造一个将这样的字符串列表转换为边缘列表的函数?

似乎我可以将每个字符串分配给一个通用对象(比如namename2name3),然后按如下方式创建一个矩阵:

name1 = "john"
name2 = "carl"
name3 = "suzanne"
matrix(data = c(name1, name2, name2, name3, name1, name3), byrow=TRUE,
ncol=2)

     [,1]   [,2]     
[1,] "john" "carl"   
[2,] "carl" "suzanne"
[3,] "john" "suzanne"

但是,这种解决方案并不能很好地扩展。如何制作可扩展的解决方案?

1 个答案:

答案 0 :(得分:1)

您似乎在寻找combn

t(combn(list, 2))
##      [,1]   [,2]     
## [1,] "john" "carl"   
## [2,] "john" "suzanne"
## [3,] "carl" "suzanne"