带字符串的图形-边必须是数字或字符

时间:2019-08-20 08:27:24

标签: r igraph

下面是一些用于生成显示生成的层次结构的图的代码,但未显示并返回以下错误:

  

图形(设备)中的错误:“边缘”必须是数字或字符

代码如下:

library(igraph)

# n = num of field devices
generate_hierarchy <- function(n=100, levels=3) {
  k <- c()
  for(i in 0:n) {
    curDevice <- paste("device", i)
    # For lower levels, generate 1-2 parent units
    for(j in 0:levels) {
      p = sample(1:2, 1)
      for(k in 0:p) {
        k <- c(k, c(curDevice, paste("unit", k, j)))
      }
    }
  }
  return(devices)
}



### Generate ###

field_devices <- 100
levels <- 2*log10(field_devices)

devices <- generate_hierarchy(field_devices, levels)
print(devices)

# Creeate basic graph
g <- graph(devices)
plot(g, vertex.color = "lightcoral", vertex.size = 40, edge.color='indianred4')

我已经看到其他人制作了如下图,所以我不确定为什么这段代码会引发错误:

g <- graph(c("Person1", "Person2", "Person1", "Person3"))

1 个答案:

答案 0 :(得分:1)

运行示例的错误是

Error in generate_hierarchy(field_devices, levels) : 
  object 'devices' not found

如果将return语句更改为return (k),那么我可以无错误地运行代码,并可以看到图:

generate_hierarchy <- function(n=100, levels=3) {
  k <- c()
  for(i in 0:n) {
    curDevice <- paste("device", i)
    # For lower levels, generate 1-2 parent units
    for(j in 0:levels) {
      p = sample(1:2, 1)
      for(k in 0:p) {
        k <- c(k, c(curDevice, paste("unit", k, j)))
      }
    }
  }
  return(k)
}

field_devices <- 100
levels <- 2*log10(field_devices)

devices <- generate_hierarchy(field_devices, levels)
[enter image description here][1]
g <- graph(devices)
plot(g, vertex.color = "lightcoral", vertex.size = 40, edge.color='indianred4')

图片:https://i.stack.imgur.com/E5pD2.png(由于帐户年龄太小,我无法嵌入图片)。