2015-02-05 2 views
0

Скажем, у меня есть список строк:Общий метод для преобразования списка к edgelist

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

Потому что они появляются в том же списке, я делаю предположение сети социального, что они связаны. Для того, чтобы иметь возможность превратить эту группу в графике, мне нужно, чтобы сделать его в edgelist:

from to 
john carl 
carl suzanne 
suzanne john 

Группа, однако, может содержать от 1 до бесконечности числа строк. Как создать функцию, которая преобразует такой список строк в edgelist?

Спонтанно, кажется, что я могу назначить каждую строку в родовой объект (скажем, name, name2 и name3), а затем просто создать матрицу следующим образом:

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" 

Однако это решение Безразлично» t очень хорошо. Как я могу сделать масштабируемое решение?

ответ

1

Вы, кажется, ищете combn.

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