0

我目前正在使用具有两种不同模式和两组不同属性的双向网络。所以第 1 行到第 5 行是一种模式,演员 A、B 和 C 是不同的模式,它们形成了一些用 1 标记的连接。

    a<-replicate( 3, numeric(5) )
    b<-apply(a, c(1,2), function(x) sample(c(0,1),1))
    rownames(b) <- rownames(c(1,2,3,4,5))
    colnames(b) <-colnames(c("A","B","C"))
    b
            A    B    C
    [1,]    1    0    1
    [2,]    1    0    1
    [3,]    0    0    0
    [4,]    0    1    1
    [5,]    1    1    0
c<-as.network(b, directed=T, bipartite =3)

    e<-c('A',"B","C")
    f<-c('tall','short','tall')
    g<-data.frame(e,f)
    colnames(g)<-c('person','height')
    g
      person height
          A   tall
          B  short
          C   tall

如何将数据框 g 的高度属性仅分配给演员 A、B 和 C?到目前为止,我已经根据A、B、C的顶点位置尝试了set.vertex.attribute

set.vertex.attribute(c, attrname= 'height', g$height, v = network.vertex.names(c)[6:9]) 

但我收到以下错误

Vertex ID does not correspond to actual vertex in set.vertex.attribute.
4

1 回答 1

0

我想通了。我自己在使用二分网络时遇到了同样的问题,我从 iGraph 教程中借了一些代码。

set.vertex.attribute(c,attrname = "height", 
                  value = as.character(g$height), 
                  v= match(c %v% "vertex.names",g$person))

这对我有用,不确定你是否需要 as.character。您通过使用名称 statnet 通过“vertex.names”了解它们来指代您想要的顶点。

于 2020-01-07T19:59:13.537 回答