1
我有一個關於使用network
包的set.edge.value
命令將邊緣值分配給R
網絡的問題。在我的大型網絡中分配的值是不正確的,因此我生成了一個小型網絡,使問題更易於查看和重現。以下是生成網絡的代碼(包括要分配的值)。使用R中的網絡包設置邊緣值
a <- c(rep("a",3), "b", "c", rep("d",3), rep("f",2), "g")
b <- c("c", "e", "f", "a", "g", "a", "e", "f", "b", "e", "c")
c <- 1:11
d <- data.frame(a,b,c)
mat <- network(d[,c(1,2)], directed=T, attrname="val")
set.edge.value(mat, "val", c)
mat2 <- as.matrix.network(mat, attrname="val")
網絡現在看起來如下。
> mat2
a b c d e f g
a 0 0 4 0 7 3 0
b 2 0 0 0 0 0 0
c 0 0 0 0 0 0 1
d 4 0 0 0 10 6 0
e 0 0 0 0 0 0 0
f 0 2 0 0 1 0 0
g 0 0 10 0 0 0 0
但是,這些顯然是錯誤的值,可以在邊界列表形式(加上c,值)下面看到。因此,邊緣ab
應具有值1
,ae
值2
等。網絡填充右邊緣,即只有確實存在的邊緣,但值是錯誤的。在我看來,它使用向量c
中的值並嘗試填充從aa
開始,然後是ab
等(即它按行填充網絡)的每個邊緣,但只填充現有邊緣。當數據用完時,使用回收規則重新開始。有沒有人有一個想法如何填補適當的價值觀的邊緣?我已經嘗試了一段時間,但我似乎無法弄清楚,Google也沒有太多幫助(或者我正在尋找錯誤的東西)。任何幫助,將不勝感激!謝謝!
> d
a b c
1 a c 1
2 a e 2
3 a f 3
4 b a 4
5 c g 5
6 d a 6
7 d e 7
8 d f 8
9 f b 9
10 f e 10
11 g c 11