Как я могу получить смежные пары комбинаций, используя R? - PullRequest
7 голосов
/ 25 августа 2011

Имеется список символов, например:

L <- list("a", "b", "c", "d")

Обратите внимание, что длина L не является фиксированной.

Как получить соседние пары комбинаций, напримерas:

     [,1] [,2]
[1,]  "a"  "b" 
[2,]  "b"  "c" 
[3,]  "c"  "d" 

На самом деле , Я делаю эту работу, чтобы получить направленную матрицу для дальнейшего анализа сети.Вы знаете, что в конкретном компьютерно-опосредованном общении люди обсуждают друг с другом один за другим, есть последовательность, новичок отвечает только на последнее сообщение.

Ответы [ 4 ]

6 голосов
/ 25 августа 2011

Использование embed

> L <- letters[1:4]
> embed(L, 2)[, 2:1]
     [,1] [,2]
[1,] "a"  "b" 
[2,] "b"  "c" 
[3,] "c"  "d" 
5 голосов
/ 25 августа 2011

Андри использует embed, безусловно, элегантно и, вероятно, более эффективно.Вот немного более неуклюжий метод:

> L<-c("a", "b", "c", "d")
> L
[1] "a" "b" "c" "d"
> matrix(c(L[-length(L)], L[-1]), ncol=2)
     [,1] [,2]
[1,] "a"  "b" 
[2,] "b"  "c" 
[3,] "c"  "d" 
1 голос
/ 25 августа 2011

Возможно combn:

L<-c("a", "b", "c", "d")

combn(L, 2)

    [,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a"  "a"  "a"  "b"  "b"  "c" 
[2,] "b"  "c"  "d"  "c"  "d"  "d"

Вы можете подмножество оттуда в зависимости от того, что вам нужно.

0 голосов
/ 11 сентября 2017

Вы можете сделать это с помощью cbind:

L <- letters[1:4]
cbind(head(L, -1), L[-1])
...