Re: [问题] adjacency matrix

楼主: celestialgod (天)   2015-04-22 10:12:47
※ 引述《angela79979 (mini)》之铭言:
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
: [软件熟悉度]:
: 入门(写过其他程式,只是对语法不熟悉)
: [问题叙述]:
: 资料为许多笔list,如:
: 1,2,4,3,5
: 2,4,5,3
: ...
: 想计算(i-1,i) 相邻两个数出现的频率并转还成matrix形式
: 如:
: (i-1,i) : 频率
: 以(i-1)为matrix的行列,频率为该元素的值,
: 若利用以上的资料 :
: (1,2):1 _1 2 3 4 5 _
: (2,4):2 1 | 0 1 0 0 0 |
: (4,3):1 ==> M=2 | 0 0 0 2 0 |
: (3,5):1 3 | 0 0 0 0 1 |
: (4,5):1 4 | 0 0 1 0 1 |
: (5,3):1 5 |_0 0 1 0 0 _|
: 请问是否有见意的方法或package?
: [关键字]:
: adjacency matrix
library(data.table)
library(dplyr)
library(magrittr)
library(Matrix)
r = list(c(1,2,4,3,5), c(2,4,5,3))
dat = sapply(r, function(x) cbind(x[-length(x)], x[-1])) %>%
do.call(rbind, .) %>% tbl_dt() %>% mutate(Value = 1) %>%
group_by(V1, V2) %>% summarise(sumV = sum(Value))
A = sparseMatrix(dat$V1, dat$V2, x=dat$sumV)
[1,] . 1 . . .
[2,] . . . 2 .
[3,] . . . . 1
[4,] . . 1 . 1
[5,] . . 1 . .
# . 在sparseMatrix是0
# 可以用as. matrix还原
as.matrix(A)
[,1] [,2] [,3] [,4] [,5]
[1,] 0 1 0 0 0
[2,] 0 0 0 2 0
[3,] 0 0 0 0 1
[4,] 0 0 1 0 1
[5,] 0 0 1 0 0

Links booklink

Contact Us: admin [ a t ] ucptt.com