【发布时间】:2016-06-03 19:52:10
【问题描述】:
我有一个关于使用network 包的set.edge.value 命令将边缘值分配给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
但是,这些显然是错误的值,如下面的 edgelist 形式所示(加上 c,值)。所以边缘ab 应该有值1、ae 值2 等等。网络填充右边缘,即只有那些确实存在但值错误的边缘。在我看来,它使用向量c 中的值并尝试填充从aa 开始的每条边,然后是ab 等(即它逐行填充网络),但只填充现有边.当它用完值时,它会使用回收规则重新开始。有谁知道如何用适当的值填充边缘?我已经尝试了一段时间,但我似乎无法弄清楚,谷歌也没有太多帮助(或者我正在寻找错误的东西)。任何帮助,将不胜感激!谢谢!
> 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
【问题讨论】:
标签: r social-networking sna